19

我目前正在为 Rails 应用程序设置一个新的生产环境,其中包括多个负载平衡的应用程序服务器(目前只有两个,但随着时间的推移会增加)。

我想使用 Capistrano(我已经将其用于现有的单个服务器)在单个命令中处理将应用程序部署到所有这些服务器。我能看到的唯一方法是使用capistrano-ext(我实际上已经用它来部署到我的测试和登台环境),为每个应用程序服务器(等等)定义一个新的“环境”app1app2使用执行部署就像是:

cap app1 app2 app3 deploy

这是推荐的方法还是有更好的方法?

4

3 回答 3

36

假设capistrano 多级

config/deploy/production

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

现在 acap deploy production将部署到所有 3 台服务器。

于 2009-11-02T23:17:48.060 回答
9

是的。Capistrano 本地管理多个服务器。无需 capistrano 分机。
您只需要定义多个角色

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

默认情况下,您的任务将在每台服务器上执行。但是您可以将任务限制在一台或几台服务器上。

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

配置/部署.rb:

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