2012-08-06 80 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