在 CodeIgniter 中构建 SaaS 应用程序,例如使用自定义域别名的 Shopify

Building a SaaS application in CodeIgniter like Shopify with custom domain alias

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

我们的SaaS架构如下:

如何实现这个功能?

为此,您必须完成几个配置选项。

  1. 配置 DNS:创建带 * 的子域。 (问楼主)
  2. 您必须配置 apache 或 .htaccess 以将进入您域的所有请求指向同一目录。
  3. 数据库设置:尝试了解如何在 codeigniter 中使用多个数据库。

就是这样。享受吧!

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

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

应用本身有1个数据库,客户端有N个数据库,每个新客户端都会有新的数据库。

  • 允许通过询问基本详细信息+子域来注册您的客户,就像 blogspot 一样,不允许重复使用现有客户使用的子域
  • 当客户注册成功后,将创建一个单独的数据库,并将登陆到他们的仪表板。这里一台数据库服务器就可以了,但应该有足够的 space 和其他参数集来处理多个数据库。
  • 现在开始使用仪表板,用户将能够看到要使用的功能列表以及一些预定义的内容集,这些内容集将在用户之间共享并从 "app DB" 加载。无论他们添加什么,都会进入他们自己的独立数据库
  • 此处代码库将部署在一个代码服务器上,主域将映射到该服务器,因此 login/singup 等将在这里发生,用户身份识别将在登录级别发生。

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

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

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

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

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