我正在尝试让Capistrano运行多阶段部署,其中每个阶段都有多个服务器。
例如,采用以下角色进行部署设置的第一阶段。
Staging
Web: "server_a", "server_b"
DB: "server_c"
server_a
和server_b
deploy_to "/var/www/appname"
。
server_c
需要deploy_to "/apps/www/appname"
。
部署后,需要运行Bundler和迁移,然后运行重启文件集。
答案 0 :(得分:0)
您可以使用Capistrano multi-stage extension并为每个环境设置不同的阶段。您将为每个环境设置角色,因此登台可能会使用一组服务器进行部署,而生产则使用另一组服务器。
在同一阶段特定的配方中(即在config/deploy/staging
中),您可以设置仅适用于该阶段的挂钩。您还可以在那里为Capistrano变量设置不同的值。
例如,您可能有阶段“暂存”:
role :web, "server_a", "server_b"
role :db, "server_c"
set :deploy_to, "/var/www/stagingsite"
after "deploy:update_code" do
run "echo hello"
end
在舞台“制作”中:
role :web, "server_d", "server_e"
role :db, "server_f"
set :deploy_to, "/apps/www/appname"
after "deploy:update_code" do
run "chmod g+w #{release_path}/tmp"
end