2012-08-29 182 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