1

我正在尝试让 Capistrano 运行多阶段部署,其中每个阶段都有多个服务器。

以具有以下角色的部署设置的第一阶段为例。

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

server_aserver_b两者deploy_to "/var/www/appname"

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

部署后,需要运行 Bundler 和迁移,然后设置重启文件。

  1. 是否可以使用 Capistrano 为不同的服务器/角色部署到不同的目录?
  2. 如果没有,是否有任何部署系统可以?
  3. 如果不是,我是否被困在手动部署中?
4

1 回答 1

0

您可以使用Capistrano 多阶段扩展并为每个环境设置不同的阶段。您将为每个环境设置角色,因此登台可能使用一组服务器进行部署,而生产使用另一组服务器。

在同一阶段特定的配方中(即在 中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
于 2012-12-21T22:48:25.740 回答