Capistrano多服务器配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Capistrano多服务器配置相关的知识,希望对你有一定的参考价值。

我想让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. 如果没有,我是不是手动部署?
答案

您可以使用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

以上是关于Capistrano多服务器配置的主要内容,如果未能解决你的问题,请参考以下文章

Capistrano、防火墙和隧道

使用 pem 文件与 capistrano 一起部署

RoR 服务器构建和 Capistrano 支持

为“capistrano-maintenance”gem 配置维护模板路径

Capistrano 3:运行自定义 shell 命令时无法识别捆绑器

Capistrano 和 Auto-Scaling AWS