19

私は現在、複数の負荷分散されたアプリケーションサーバーを含むRailsアプリケーションの新しい本番環境をセットアップしています(現在は2つだけですが、これは時間の経過とともに増加します)。

Capistrano(既存の単一サーバーですでに使用しています)を使用して、これらすべてのサーバーへのアプリの展開を1つのコマンドで処理したいと思います。これを行うことができる唯一の方法は、各アプリケーションサーバー(など)capistrano-extに新しい「環境」を定義し、を使用して展開を実行することにより、(実際にテストおよびステージング環境に展開するためにすでに使用している)を使用することです。何かのようなもの:app1app2

cap app1 app2 app3 deploy

これはそれを行うための推奨される方法ですか、それともより良いアプローチがありますか?

4

3 に答える 3

36

capistrano多段を想定:

config/deploy/production

role :app, "server1", "server2", "server3"

これで、cap deploy production3つのサーバーすべてにデプロイされます。

于 2009-11-02T23:17:48.060 に答える
9

うん。Capistranoは複数のサーバーをネイティブに管理します。capistranoextの必要はありません。複数の役割
を定義するだけで済みます

role :app, "myserver.example.com"
role :db,  "mysecondserver.example.com"

デフォルトでは、タスクはすべてのサーバーで実行されます。ただし、タスクを1つまたは一部のサーバーのみに制限できます。

task :migrate, :roles => [:app, :db] do
    # ...
end

ここでは、タスクはappとdbの役割でのみ実行されます。

runメソッドでも同じことができます。

run "rake db:migrate", :roles => :db

rake db:migrateは、dbサーバーでのみ実行されます。

于 2009-11-02T15:20:22.133 に答える
2

これは私が試したことですrails 4

config / deploy.rb:

role :app, %w{server1 server2 server3}
于 2015-01-19T14:22:54.280 に答える