【问题标题】:How do I deploy a rails app to more than one domain/user/db combination in Capistrano and Rails 3?如何在 Capistrano 和 Rails 3 中将 Rails 应用程序部署到多个域/用户/数据库组合?
【发布时间】:2011-02-09 05:26:39
【问题描述】:

这听起来可能很奇怪(甚至很危险),但我想将一个 rails 应用程序部署到多个域。我为几个不同的客户构建了一个 CMS。站点之间的唯一区别是 CSS 文件、图像、database.yml 和 config.yml 文件。当我部署时,我想一次更新他们的所有站点。每个域使用不同的用户名和密码,所以我不能使用 deploy.rb 文件中正常设置的单个用户。基本上我需要在不同的用户、域和数据库集上运行部署。

我的需求与仅部署到多个暂存、测试或负载平衡服务器不同。每个 Web 服务器都是一个独特且独立的生产服务器,运行起来就好像它是一个不同的 Rails 应用程序。

我需要在 deploy.rb 中执行以下操作:

role :app, "www.cats.com", "www.dogs.com"
role :web, "www.cats.com", "www.dogs.com"
role :db, "www.cats.com", "www.dogs.com" # both need the same migrations

set :deploy_to  "/home/#{cats_user}/www.cats.com",  "/home/#{dogs_user}/www.dogs.com"

这样的事情可能吗?如果没有,我们将不胜感激一个好的替代方案!

【问题讨论】:

  • +1 起初我以为这是重复的,但它与关于这个主题的正常问题有点不同。

标签: ruby-on-rails ruby-on-rails-3 capistrano


【解决方案1】:

我们使用capistrano-ext 的多阶段选项,如this article 中所述。

博文中的示例针对发布的不同阶段(测试、验收、生产),但您也可以使用它来部署到不同的服务器。由于每个阶段都有自己的配置文件,您可以轻松更改每个阶段的配置(config.yml/database.yml)。

如果你有更多问题,尽管问:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2012-06-25
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多