2012-08-29 141 views
0

我想让Capistrano运行一个多阶段部署,其中每个阶段都有多个服务器。Capistrano多服务器配置

举例来说,具有以下角色的第一阶段部署设置。

Staging 
    Web: "server_a", "server_b" 
    DB: "server_c" 

server_aserver_bdeploy_to "/var/www/appname"

server_c需要deploy_to "/apps/www/appname"

部署后,需要运行Bundler和迁移,然后重新启动文件集。

  1. 是否可以通过Capistrano部署到不同服务器/角色的不同目录?
  2. 如果没有,那里是否有任何部署系统?
  3. 如果不是,我是否坚持用手部署?

回答

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