【问题标题】:Capistrano - How to deploy to multiple cloud serversCapistrano - 如何部署到多个云服务器
【发布时间】:2012-07-20 05:39:34
【问题描述】:

我听说 Capistrano 支持部署到多个服务器,但我还没有找到一种实用的设置方法。当我说多台服务器时,我的意思是在生产环境中运行相同应用程序的服务器。如果这是我目前使用的,我随时想部署到 5 或 10 台服务器。

谢谢。

【问题讨论】:

    标签: deployment amazon-web-services capistrano cloud-hosting rackspace-cloud


    【解决方案1】:

    我不得不在 Rails 4 中使用不同的语法。

    role :app, %w{s01.app.com s02.app.com}
    role :web, %w{s01.web.com s02.web.com}
    

    【讨论】:

      【解决方案2】:

      使用多台服务器是使用 capistrano 而不是手工操作的主要原因之一。

      您的 deploy.rb 只需要定义应该在哪些服务器上执行哪些操作,这是通过设置哪些服务器属于哪些角色来完成的。您可以创建自己的角色,但内置 capistrano 配方要求您定义 3 个角色:

      • app:应用程序代码运行的地方
      • web:web 前端
      • db:运行迁移的位置

      这 3 个同义词并不少见:如果您有一堆相同的服务器都运行 apache + 乘客,那么它们都是应用程序和 Web 服务器。其中一个需要被赋予 db 角色。

      您在 deploy.rb 文件中定义角色。在最简单的情况下,这只是一个 IP 地址或主机名列表:

      role :app, [192.168.1.1,192.168.1.2]
      

      它也可以是一个块。例如,在部署到 ec2 时,您可能会插入一个 api 调用来检索要部署到的服务器列表。我通常通过为服务器分配标签来做到这一点,在这种情况下你可能有

      role :app do
        ec2.instances.tagged('app').map(&:ip_address)
      end
      

      使用 app 标签将该角色映射到 ec2 实例(capistrano 缓存此信息并且只会执行一次您的块)

      【讨论】:

        猜你喜欢
        • 2014-05-26
        • 2010-09-30
        • 1970-01-01
        • 2011-08-26
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-07
        • 1970-01-01
        相关资源
        最近更新 更多