Capistrano - 如何部署到多个云服务器

4
我听说Capistrano支持将应用程序部署到多个服务器,但我还没有找到实用的设置方法。当我说多个服务器时,我指的是在生产环境中运行相同应用程序的服务器。任何时候,如果我正在使用5或10个服务器,我希望能够部署到这些服务器。谢谢。
2个回答

10
使用多个服务器是使用Capistrano的主要原因之一,而不是手动处理所有内容。
您的deploy.rb只需要定义在哪些服务器上执行哪些操作,这是通过设置哪些服务器属于哪些角色来完成的。您可以创建自己的角色,但内置的Capistrano配方希望您定义3个角色:
- app:运行应用程序代码的位置 - web:Web前端 - db:迁移运行的位置
如果这3个角色都是同义词,则很常见:如果您有一堆运行apache + passenger的相同服务器,则它们都是app和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会缓存此信息,仅在执行一次您的块时才会执行)


0

我必须使用不同的语法来处理Rails 4。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接