【问题标题】:Deploy Rails app to EC2将 Rails 应用程序部署到 EC2
【发布时间】:2011-06-28 02:51:29
【问题描述】:

我的设置:Windows 上的 Rails 2.3.10、Ruby 1.8.7

上次我在 Slicehost 上将 Rails 应用程序从 Windows 部署到 Linux 时,我使用了 Capistrano、Nginx、Mongrel 和 SVN。那是 3 年前,快进到现在,我仍在 Windows 上进行开发,现在正在寻求部署到 EC2。快速搜索会发现像 Rubber 和 Chef 这样的工具,快速阅读并不容易掌握。似乎 Rubber 和 Chef 是为多 EC2 实例部署而设计的,这在我需要扩展时很有用。

我也是Passenger的新手,但它似乎是现在部署Rails应用程序的默认方式,我不太清楚的一件事是Passenger是否可以替代Mongrel?在我的旧设置中,我将 Nginx 配置为将 Rails 请求转发到 Mongrel 进程集群,但对于乘客,我没有看到类似的东西。

非常感谢任何见解。

【问题讨论】:

  • 如果不需要部署到 EC2,不妨看看 heroku.com。这是一个如何在 windows 中使用 heroku 的视频:devcenter.heroku.com/articles/windows
  • 感谢您的建议,我已经在使用 Heroku 作为登台/测试服务器。对于生产,我计划部署到 EC2,最初在 1 个实例上,但部署应在需要时扩展到多个实例。我在想 EC2 实例应该从 Heroku 中提取最新的 git 源。

标签: ruby-on-rails deployment


【解决方案1】:

我们使用类似于您为我们的生产服务器描述的东西:EC2 + Apache + Passenger。我们没有任何需要使用您描述的花哨的部署工具 - 普通的旧 Capistrano(加上capistrano-ext,因此我们可以将它用于多种环境)可以很好地完成工作。我看过 Rubber(不是 Chef),但认为它是不必要的自动化且文档记录太差,而且我真的不确定它提供了什么,而 Capistrano 中的角色无法做到这一点。

乘客很棒。 manages a collection of Mongrel-like workers 是一个“监督者”(我原以为工人是 Mongrel,但经过进一步阅读,我认为他们不是。Passenger comparisons page 甚至将其 RPS 与 Mongrel 集群进行比较,所以......) ,根据需要启动它们,在低负载下剔除它们,如果它们崩溃则重新启动它们等。它实际上与您描述的 Server + Mongrel Cluster 非常相似,但可能要好一些,因为Passenger 了解底层工作人员Nginx / Apache 没有。而且你必须让 a few minor tweaks 让 Capistrano 与Passenger 玩得很好。

如果可能的话,将Passenger 与Ruby Enterprise Edition 配对(来自制作Passenger 的同一个人)。它是 Ruby 的一个更快的版本,主要归功于重写的、可配置的垃圾收集器。您必须tune your GC settings 才能充分利用它。

希望这会有所帮助!

【讨论】:

  • 感谢您的详细解释。通过 capistrano-ext 处理多个环境,您是指部署到多个 EC2 实例还是其他什么?
  • @Bob 我们使用 capistrano-ext 部署到不同的环境。例如,它允许我们使用cap production deploy 部署到生产服务器,并使用cap staging deploy 部署到登台服务器。每个环境在 config/deploy 中都有自己的“#{environment}.rb”文件,其中包含任何特定于环境的 Capistrano 设置。这包括环境的所有服务器的列表,因此每个环境都可以部署到多个 EC2 实例 - 只需在“#{environment}.rb”文件中列出您想要部署到的所有实例。
【解决方案2】:
【解决方案3】:

Rubystack 允许您拥有相同的 Rails 环境,以便在 Windows 上进行开发和在 Linux 上进行部署。我们也有 EC2 镜像(滚动到底部),它是完全免费的,所以您不妨试试看。

此外,这可能不适合您,但根据您的要求,您可能需要像 Heroku 这样的 PaaS 解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2016-09-29
    • 2017-02-01
    相关资源
    最近更新 更多