2012-08-06 51 views
10

我有一个Symfony2核心,它用于域A和域B.但是,如果我更新核心,我需要更新两次,因为我不知道如何配置只有一个核心,与他们的配置/数据库多个域。Symfony多个站点

对此提出建议?

回答

8

充分利用“网络”目录拷贝到每个域“的public_html”文件夹中(假设你在Linux上运行的Apache)

这个“网”目录包含您的网站(应用程序的前端控制器。 php和app_dev.php),找到它们并在你最喜欢的文本编辑器上进行编辑。定位此行:

require_once __DIR__.'/../app/bootstrap.php.cache'; 
require_once __DIR__.'/../app/AppKernel.php'; 

并将路由更改为核心所在的实际相对路径。这可能是这样的:

require_once __DIR__.'/../the_core_is_here/app/bootstrap.php.cache'; 
require_once __DIR__.'/../the_core_is_here/app/AppKernel.php'; 

这是灵活,可以根据您的组织,但要确保这两条线有正确的路径

请记住,所有的资产(JS, CSS,图像...)是相对于前端控制器的位置,因此您需要使用它们所在域名的完整网址链接它们将它们也复制到B域使用资产

最后你会我有类似的东西:

/ 
.. home 
.. .. DOMAINA 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. DOMAINB 
.. .. .. public_html 
.. .. .. .. app.php 
.. .. .. .. img 
.. .. .. .. .. image.png 
.. .. the_core_is_here 
.. .. .. app 
.. .. .. src 
.. .. .. bin 
.. .. .. vendor 

现在你应该有2个切入点为你的应用程序。你甚至可以在每个CSS和图像上给他们不同的方面。

+0

该probolem是如何有多个数据库和切换基于每个客户的域.. – 2012-08-08 18:20:28

+2

您需要添加多个实体管理器(每个数据库一个)(http://symfony.com/doc/current/cookbook /doctrine/multiple_entity_managers.html),然后根据被访问的域名选择正确的域名(在REQUEST对象上查找,如果你想缩放它,建立一个服务来做到这一点。 – Xocoatzin 2012-08-08 18:29:01

3

也许你可以尝试使用Capifony,它是ruby针对Symfony应用程序编写的部署脚本。我没有做过任何设置,比如你试图实现的目标,但是我用它来部署两台生产服务器。可以设置为将应用程序的不同实例部署到一个服务器(例如:不同的目录)或多个服务器。

一旦他们正确地安装,部署仅仅是一个打字的事:在运行命令

cap server1 deploy 
cap server2 deploy 

每次,capifony会拉从库中的最新代码(例如:GIT),并部署它。作为奖励,应用程序的旧版本也保存在服务器上,如果您需要返回到以前的状态。

下面是示例capifony配置脚本只给你一个概述:

# deploy.rb 
set :application, "My App" 
set :deploy_to,  "/var/www/my-app.com" 
set :domain,  "my-app.com" 

set :scm,   :git 
set :repository, "ssh-gitrepo-domain.com:/path/to/repo.git" 

role :web,   domain 
role :app,   domain 
role :db,   domain, :primary => true 

set :use_sudo,  false 
set :keep_releases, 3 

而且你可以有不同的配置脚本,分别用于不同领域,使用multistage extensioncapifony