1

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

app/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}"

4

2 に答える 2

0

サーバードメインに置き換えて、ソリューション@Elnurを試しましたが、展開は正常に機能しますが、問題は引き続き発生します...さらに調査とテストを行った結果、機能するように見えるソリューションを思いつきました。

app/autoload.phpでAPCを使用していることに気づきました

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

xx。APCで名前空間を作成するためのAプレフィックスです http://symfony.com/doc/2.0/components/class_loader.html

に置き換えました

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

次に、 Apacheを再起動してrm -Rf app / cache / *

それで問題は解決したようです。同じサーバー上の2つの異なるWebサイトで同じ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}
于 2012-12-10T07:31:27.450 に答える
0

serverの代わりにパラメータを使用する必要があります:domain

stag.rb:

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

stag2.rb:

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

このようなものには使用しないでください:domain

ドキュメントを参照してください

于 2012-09-04T10:23:34.173 に答える