Развертывание Symfony2 Capifony — конфликты на одном сервере

Я хочу развернуть разные ветки репозитория Git на одном сервере.

Я обновил app/config/deploy.rb

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

Я создал новые файлы в app/config/deploy/

В app/config/deploy/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

В приложении/config/deploy/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 развертывается в неправильном каталоге

Я также пробовал с set :deploy_to, "/var/www/stag2/#{domain}"


person Jerem    schedule 04.09.2012    source источник


Ответы (2)


Вы должны использовать параметры server вместо :domain.

stag.rb:

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

stag2.rb:

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

Не используйте :domain для этого.

см. документацию.

person Elnur Abdurrakhimov    schedule 04.09.2012

Я попробовал ваше решение @Elnur, заменив server на domain, развертывание работает нормально, но проблема все еще возникает ... После дополнительных исследований и тестов я нашел решение, которое кажется работать.

Я заметил, что в 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 и rm -Rf app/cache/*

Кажется, это решает проблему. Я был бы удивлен, если бы одно и то же пространство имен APC могло использоваться двумя разными веб-сайтами на одном сервере.

Это трассировка стека исключения, которую мы получили ранее, посмотрите, как мы переходим
от /var/www/stag5.XXXX.com/
до /var/www/< b>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}
person Jerem    schedule 10.12.2012