2012-09-04 79 views
1

我想在同一臺服務器上部署不同的Git存儲庫分支。Symfony2 Capifony部署 - 衝突在同一臺服務器上

我已經更新應用程序/配置/ deploy.rb

set :stage_dir, "app/config/deploy" 
require "capistrano/ext/multistage" 
set :stages, %w(prod stag stag2 stag3) 
set :application, "MyApp" 

我在應用程序中創建新的文件/配置/部署/

在應用程序/配置/部署/ stag.rb:

set :symfony_env_prod, "stag" 
set :domain,   "stag.example.com" 
set :deploy_to,  "/var/www/#{domain}" 

# Other config 
role :web,    domain 
role :app,    domain 
role :db,    domain, :primary => true 

在應用程序/配置/部署/ stag2.rb

set :symfony_env_prod, "stag" 
set :domain,   "stag2.example.com" 
set :deploy_to,  "/var/www/#{domain}" 

# Other config 
role :web,    domain 
role :app,    domain 
role :db,    domain, :primary => true 

我也推出了cap stag2 deploy:setup

當我部署使用cap stag deploy,stag.example.com優良

然後,當我部署cap stag2 deploy,stag2.example.com是文件,但stag.example.com得到STAG2一些變化。 stag.example.com的源文件是正確的。我想有一個緩存衝突。

Capifony能夠在同一臺服務器上正確部署相同的應用嗎?

編輯:聽起來類似Capistrano Multistage deploying to wrong directory

我也set :deploy_to, "/var/www/stag2/#{domain}"

回答

0

試過你必須使用的,而不是:domainserver參數。

stag.rb

server "stag.example.com", :app, :web, :primary => true 

stag2.rb

server "stag2.example.com", :app, :web, :primary => true 

不要這個東西使用:domain

See the docs

+0

謝謝elnur,聽起來不錯。我會盡力 – Jerem

0

我想你的解決方案@Elnur,更換服務器通過,部署工作正常,但問題仍然存在... 經過調查和測試,我想出了,似乎工作的解決方案。

我注意到,在app/autoload.php我們使用APC

$loader = new ApcUniversalClassLoader('xx.'); 

XX。在APC創建命名空間 http://symfony.com/doc/2.0/components/class_loader.html

前綴我通過

$loader = new ApcUniversalClassLoader('xx.stagX'); 

然後重新啓動Apache室射頻應用程序/緩存/ *

替換了似乎解決了這個問題。如果相同的APC名稱空間可以被同一臺服務器上的兩個不同的網站使用,我會感到驚訝。

這是異常堆棧跟蹤,我們之前得到的,看我們如何去
在/ var/WWW/stag5 .XXXX.com/
到     在/ var/WWW/stag6 .XXXX.com/

#10 /var/www/stag6.XXXX.com/shared/vendor/cg-library/src/CG/Proxy/MethodInvocation.php(58): JMS\SecurityExtraBundle\Security\Authorization\Interception\MethodSecurityInterceptor->intercept(Object(CG\Proxy\MethodInvocation)) 
#11 /var/www/stag5.XXXX.com/releases/20121210053804/app/cache/stag/jms_aop/proxies/St-XxBundle-Manager-XxxManager.php(85): CG\Proxy\MethodInvocation->proceed() 
#12 /var/www/stag6.XXXX.com/releases/20121210060841/src/Xx/XxxBundle/Controller/XxxController.php(85): EnhancedProxy_16c750f17d8113ffbee7fc3acdc4b1625ca7410b\__CG__\St\CoreBundle\Manager\TagsManager->findXxxxx(Object(Xx\XxBundle\Entity\Project)) 
#13 [internal function]: Xx\XxxxxBundle\Controller\XxxxController->getXxxAction(Object(Symfony\Component\HttpFoundation\Request)) 
#14 /var/www/stag5.XXXX.com/releases/20121210053804/app/cache/stag/classes.php(4591): call_user_func_array(Array, Array) 
#15 /var/www/stag5.XXXX.com/releases/20121210053804/app/cache/stag/classes.php(4555): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) 
#16 /var/www/stag5.XXXX.com/releases/20121210053804/app/cache/stag/classes.php(5537): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#17 /var/www/stag5.XXXX.com/releases/20121210053804/app/bootstrap.php.cache(564): Symfony\Bundle\FrameworkBundle\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) 
#18 /var/www/stag5.XXXX.com/releases/20121210053804/web/app_stag.php(13): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request)) 
#19 {main} 
相關問題