我们将在Symfony2之上构建一个SaaS CMS(如果您认为Symfony2是错误的方法,请回答)。我们有很多客户,我们想要创建一个具有以下架构的CMS:
假设我们有200个或更多客户(网站),每个客户都应该共享一个全球CMS(所有客户都拥有最新版本)。此外,每个客户都应拥有自己的数据库和客户自己的数据。在这种情况下,CMS核心需要一个主数据库,其中包含有关客户数据库等的信息。我的方法是构建一个多站点架构,其中每个客户都有自己的aph vHost,并且所有客户共享一个CMS核心。
/var/www/cust001/ -> CMS customer 1
/var/www/cust002/ -> CMS customer 2
...
这些文件夹是公共html区域,其中为每个客户存储模板,CSS,图像等。 CMS本身不在公共区域内,例如位于/var/cms/
,并且不能通过apache2服务器使用。是否需要客户的vhost符号链接到CMS核心的前端控制器?每个客户虚拟主机都应该通过某些域提供,例如
cust1 -> cust001.mycompany.com, alias www.customerdomain.com ...
cust2 -> cust002.mycompany.com, alias www.customer2domain.com ...
...
此外,每个客户都应该能够拥有一些Symfony2软件包(插件),用于在其虚拟主机中扩展核心CMS(网上商店,留言簿......)。
这种方法可以用Symfony2实现吗? 将vhost域路由到前端控制器并选择正确的数据库的最佳方法是什么? Symfony2中的动态路由(网站页面请求)是如何管理的? 有没有其他方法?
答案 0 :(得分:2)
我认为这是一个好主意,但聪明人已经在两个方向做出了选择:
构建Apostrophe CMS(我选择的CMS)的Punk'Ave团队选择从sf1迁移到node.js而不是sf2,其原因详见公告: AKBUfjzwJ“> HTTPS://groups.google.com/d/msg/apostrophenow/d-g1P6chsm8/l_AKBUfjzwJ
Apostrophe确实有一个优秀的SAAS CMS解决方案,在apostrophenow.com上相当不错
然而,EzPublish团队选择了Symfony 2,我认为它支持MultiSite或MultiTenancy,而Drupal 8也将使用一些Sf2组件。
Symfony 2路由功能非常强大,但我没有具体的链接来回答所有低级问题。