我们将在 Symfony2 之上构建一个 SaaS CMS(如果您认为 Symfony2 是错误的方法,请回答)。我们有很多客户,我们想创建一个具有以下架构的 CMS:
假设我们有 200 个或更多客户(网站),每个客户都应该共享一个全球 CMS(所有客户都有最新版本)。此外,每个客户都应该拥有自己的数据库,其中包含客户自己的数据。在这种情况下,CMS 核心需要一个包含客户数据库等信息的主数据库。我的方法是构建一个多站点架构,其中每个客户在 apache 中都有自己的 vHost,所有客户共享一个 CMS 核心。
/var/www/cust001/ -> CMS customer 1
/var/www/cust002/ -> CMS customer 2
...
这些文件夹是为每个客户存储模板、css、图像等的公共 html 区域。CMS 本身不在公共区域内,例如,它位于 apache2 服务器中/var/cms/
,并且无法通过 apache2 服务器使用。是否需要客户的虚拟主机符号链接到 CMS 核心的前端控制器?每个客户虚拟主机都应该可以通过某些域访问,例如
cust1 -> cust001.mycompany.com, alias www.customerdomain.com ...
cust2 -> cust002.mycompany.com, alias www.customer2domain.com ...
...
此外,每个客户都应该能够拥有一些 Symfony2 捆绑包(插件),用于在他们的虚拟主机中扩展核心 CMS(网店、留言簿......)。
这种方法可以用 Symfony2 实现吗?将虚拟主机域路由到前端控制器并选择正确的数据库的最佳方法是什么?Symfony2 中的动态路由(网站页面请求)是如何管理的?有一些替代方法吗?