在Codeify中使用自定义域别名在Shopify中构建SaaS应用程序

时间:2015-01-29 08:27:11

标签: php .htaccess codeigniter saas

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

  • 我使用了CodeIgniter PHP框架。
  • SaaS Methodology - 多个数据库,单个代码库

我们的SaaS架构如下:

SaaS Architecture

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

如何实现此功能?

3 个答案:

答案 0 :(得分:1)

为此,您必须经历一些配置选项。

  1. 配置DNS:使用*创建子域。 (请你主持)
  2. 您必须配置apache或.htaccess以指向进入您域的所有请求指向同一目录。
  3. 数据库设置:尝试学习如何在codeigniter中使用多个数据库。
  4. 这就是全部。享受!

答案 1 :(得分:0)

我认为您应该寻找术语:“codeigniter multi Tennant app”,如前所述,管理太多数据库不是解决方案!

答案 2 :(得分:0)

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

应用程序本身将有1个数据库,而客户端将有N个数据库,每个新客户端将有一个新数据库。

  • 通过要求基本详细信息+子域来进行选择(例如Blogspot)来注册您的客户,现有客户采用的子域将不允许重复使用
  • 成功注册客户端后,将创建一个单独的数据库,并将其放入其仪表板。在这里,一台数据库服务器就可以了,但是应该有足够的空间和其他参数集来处理多个数据库。
  • 从现在开始,用户将能够看到要使用的功能列表以及一些预定义的内容集,这些内容将在用户之间共享并从“应用程序数据库”中加载。无论他们添加什么,都将进入他们自己的独立数据库
  • 这里的代码库将部署在一个代码服务器上,并且主域将映射到该代码服务器上,因此将在此处进行登录/合并等操作,并且用户的标识将在登录级别进行。

应用数据库:该数据库将负责存储应用级别的主数据,即客户的个人资料+登录详细信息,以及他们打算共享给客户的其他与管理相关的内容。如果是shopify类型的应用程序,则主题,布局,模板可以是存储在该数据库中的主要内容。

用户数据库:仅应存储用户创建,添加的内容及其子内容。我们可以称呼用户所有权的任何内容都应存储在此处。

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

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

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