Php 在CodeIgniter(如Shopify)中使用自定义域别名构建SaaS应用程序

Php 在CodeIgniter(如Shopify)中使用自定义域别名构建SaaS应用程序,php,.htaccess,codeigniter,saas,Php,.htaccess,Codeigniter,Saas,我正在开发一个SaaS应用程序。我们以Shopify/Magento等作为参考 我使用了CodeIgniter PHP框架 SaaS方法-多数据库、单代码库 我们的SaaS架构如下: 当客户注册时,将使用其名称构建数据库,并包含其特定的数据库 当客户注册时,他会得到一个子域(例如:test1.example.com) 客户可以添加自己的域,该域指向系统定义的子域。(例如:test1.example.com至www.mydomain.com) 如何实现此功能?为此,您必须通过一些配置选项

我正在开发一个SaaS应用程序。我们以Shopify/Magento等作为参考

  • 我使用了CodeIgniter PHP框架
  • SaaS方法-多数据库、单代码库
我们的SaaS架构如下:

  • 当客户注册时,将使用其名称构建数据库,并包含其特定的数据库
  • 当客户注册时,他会得到一个子域(例如:test1.example.com)
  • 客户可以添加自己的域,该域指向系统定义的子域。(例如:test1.example.com至www.mydomain.com)

如何实现此功能?

为此,您必须通过一些配置选项

  • 配置DNS:使用*创建子域。(问主持人)
  • 您必须配置apache或.htaccess以将所有到达域的请求指向同一目录
  • 数据库设置:尝试学习如何在codeigniter中使用多个数据库

  • 就这些。享受吧

    我认为你应该寻找一个术语:“codeigniter multi-Tennant应用程序”,正如前面所说,管理太多数据库不是一个解决方案

    您可以通过这种方式实现提议的SAAS应用程序

    将有1个数据库用于应用程序本身,另外N个数据库用于客户端,每个新客户端将有新的数据库

    • 允许通过询问基本详细信息+子域来注册您的客户,就像blogspot一样,现有客户使用的子域将不允许重复使用
    • 当客户端注册成功时,将创建一个单独的数据库,并将其登录到仪表板。在这里,一个DB服务器就可以了,但是应该有足够的空间和其他参数设置来处理多个数据库
    • 现在从dahsboard开始,用户将能够看到要使用的功能列表以及一些预定义的内容集,这些内容将在用户之间共享并从“AppDB”加载。他们所做的任何添加都将进入他们自己的独立数据库
    • 在这里,代码库将部署在一个代码服务器上,主域将映射到该服务器上,以便在这里进行登录/挑选等操作,用户的身份识别将在登录级别进行
    应用程序数据库:该数据库将负责存储应用程序级主数据,即客户的个人资料+登录详细信息,以及其他与管理员相关的信息,这些信息将共享给客户。在shopify类应用中,主题、布局、模板可以是存储在此数据库中的主要内容

    用户数据库:只应存储用户创建、添加的内容及其子内容。我们可以称之为用户所有权的东西都应该存储在这里

    注意:如果是付费服务,那么您可以使用stripe或chargebee等良好的支付网关来管理您的所有计划、订阅、电子邮件通知、催款、支付日志、支付成功/失败、支付发票

    WRT的子域和自定义域的概念,你可以做到这一点使用虚拟主机机制,你可以做的apache以及nginx服务器。 -子域:根据服务器创建配置文件,放在适当的位置,任何创建的子域都将绑定到特定的pysical虚拟目录 -Customdomain:可以创建与子域相同的物理目录以及配置文件,但在这种情况下,您需要要求您的客户端使用我们的IP地址进行DNS绑定


    在这两种情况下,当请求到达我们的服务器时,服务器会检查配置文件和物理目录是否可用,然后它会将用户重定向到destiny forlder。

    问题是?实现所描述的功能对于这个站点(以及大多数其他站点)来说太广泛了,但是:首先设计数据库,所以它是多租户的。设计软件,使其可以重新主题化,即使用类似MVC的框架,可以加载不同的布局/样式表。添加URL字段,以便可以基于域执行内部路由。让您的web服务器捕获所有子域并将它们路由到同一vhost。请记住,这不是一件小事。是否有任何参考资料、教程或博客可以达到我所要求的效果?不,没有。您希望开发一个复杂的产品,因此您需要获得创建该产品的技能(需要几年),或者雇佣能够为您设计广泛设计的人员,如果您想了解我们如何实际使用物理目录进行子域+自定义域绑定/映射,请与我联系,这是一个漫长的过程,花了几个月的时间开发,因为在internet上没有太多直接的帮助。我们还为所有客户机的子域甚至自定义域添加了免费SSL。