【问题标题】:Best practices for new Rails deployments on Linux?Linux 上新 Rails 部署的最佳实践?
【发布时间】:2010-09-21 18:19:58
【问题描述】:

我用过纯 Mongrel,我用过 Apache 后面的 Mongrel 集群,我看过 Thin,而且我对Passenger 很感兴趣。我也看过 Nginx。我看过 MRI、Ruby Enterprise Edition、Rubinius 和 JRuby。有很多选择,每个都声称是新的圣杯。

对于全新的、完全最新的部署,最好的选择是什么?唯一的假设是:

  • 该应用程序基于 Rails 2.2。 (我知道 2.2 还没有完全发布,但这个部署也没有。)
  • 服务器基于 Linux。可能是 Ubuntu Hardy,但实际上,在这种情况下,无论哪种效果最好。
  • Rails 需要功能齐全,并且可能与 MySQL 数据库通信。
  • 其他一切都可以协商。

鉴于这些特别广泛的限制条件,哪种软件组合会在并发性和低开销方面产生最佳结果?

我倾向于使用“worker”mpm 和Passenger + Ruby Enterprise Edition 的Apache,仅仅是因为它提供了即时的稳定性以及设置和维护的简单性。

如果我选择另一种选择,我的情况会不会特别好?

【问题讨论】:

    标签: ruby-on-rails ruby linux deployment release-management


    【解决方案1】:

    两周前我从 Mongrel Cluster 切换到了 Passenger(Debian Linux 服务器)。我一秒钟都没有回头。乘客可能是启动和运行新服务器的最简单方法。性能和可靠性也很合理。

    就个人而言,我喜欢把时间花在令人兴奋的新 Rails 项目上,而不是处理部署问题——Passenger 让我能够做到这一点。但是,如果您有某种特殊要求(不适用于大多数产品),Mongrel 或其他东西可能仍然是可取的。

    【讨论】:

    • Passenger 的 +1 -- 超级简单的部署和 Mongrel 过去一样快(有时对我的应用程序来说更快)。太棒了!
    • 乘客的另一个 +1。我苦苦挣扎了一周,试图在 debian 上设置一组 mongrel,但在一个下午和乘客一起完成了部署设置。
    • 乘客 +1。部署从开始到结束花了我大约 10 分钟。
    【解决方案2】:

    今天早上,DHH 在他自己的博客上谈到了这个话题:

    但不知何故,Passenger 的信息接收速度有点慢。已经有大量大型网站正在运行它。包括 Shopify、MTV、Geni、Yammer,我们很快就会完成第一个 Ta-da List,然后希望之后很快就会完成 37signals 套件的其余部分。

    因此,尽管仍有理由运行您自己的手动配置部件的自定义多层设置,就像有些人因为他们的细节而回避 mod_php,但我认为我们最终确定了一个默认答案。不需要您真正考虑 Rails 应用程序的第一次部署。开箱即用的东西。即使那个盒子是共享主机!

    http://www.loudthinking.com/posts/30-myth-1-rails-is-hard-to-deploy

    Tobias Lütke 关于将 Shopify(每天百万次请求)切换到Passenger 的主题:

    所有这一切意味着 Shopify 在正常操作期间使用的内存总量从平均 9GB 变为平均 5GB。我们将节省的成本平均分配给更多 Shopify 进程和更多 memcached 空间,这将我们的平均响应时间从 210 毫秒提高到 130 毫秒,而过去几个月的流量增长了 30%。

    总结:目前我看不出有任何理由选择不同的部署策略。它简单、完整、快速且有据可查。

    http://blog.leetsoft.com/2008/11/15/passenger

    【讨论】:

      【解决方案3】:

      在过去的 18 个月里,我们一直在使用旧的标准 nginx -> mongrel 堆栈,虽然第一次设置并非易事,但它被证明是灵活的,并且已经处理了一些非常高流量的网站我们。尤其是 Nginx,它绝对坚如磐石,速度极快,如果您可以获取应用页面缓存,则可以处理大量请求。

      卡住的杂种一直是个问题,所以当它们行为不端时,我们使用 monit 将它们杀死。同样,设置起来也不是一件容易的事,但我们已经在许多网站上使用了相同的过程。

      我们还没有和乘客一起玩,所以也许它更容易和更稳定,我会听从其他响应者的意见,我只能说你没有理由不能建立一个坚实的与 nginx 和 mongrel 堆栈。

      【讨论】:

        【解决方案4】:

        我们已从 NginX+Mongrel 切换到Passenger。

        我完全相信,Passenger 将成为 Rails 的新标准,尽管 NginX 和 Mongrel 集群得到了一些非常聪明的人的认可。乘客的最新进展确实推动了它向前发展。

        我们当前的配置是这样的:

        网络服务器

        • Ubuntu 8.04 LTS
        • Apache2 上的 Phusion Passenger
        • MRI Ruby 1.8.6 和朋友(形式 apt)
        • Ruby Gems 1.3.0(从源代码安装)

        数据库服务器

        • Centos 5
        • MySQL 集群(我们刚刚切换到这个,但很有希望)

        在确切的 linux 发行版上实现标准化后,我们能够编写 Capitrano 配方来帮助部署(配置中的细微变化是许多服务中断的根源)并以其他方式简化我们的生活。

        【讨论】:

          【解决方案5】:

          看看Litespeed。您可以获得在 1 个 cpu 上运行的免费版本,也可以付费获得多 cpu。它有点贵,但坚如磐石并且可以出色地处理轨道(即使用更少的内存并且监控和设置的开销更少)。我在它上面运行了大量的应用程序,它不会错过任何一个节拍。

          【讨论】:

            【解决方案6】:

            我们还从 Mongrel 切换到 mod_passenger,发现稳定性大大提高,因为需要进行设置和维护。不错的选择。

            【讨论】:

              【解决方案7】:

              又是一块金子:

              Josh Peek 的Slicehost gem 充满了 Capistrano 食谱,这些食谱比 Deprec 更简单、更有条理。里面也没有什么特别针对 Slicehost。

              【讨论】:

                【解决方案8】:

                我在 Ubuntu Hardy 上使用 Apache2 和 Passenger 托管我的新应用程序。在大多数情况下,这似乎是最简单和最好的选择。为此,我刚刚加入了 Slicehost.com。他们似乎得到了很好的评价,并且拥有一流主机最具竞争力的价格。

                我还不能真正认可他们,因为我是新客户,但指南集和支持选项范围令人印象深刻。

                您没有提及的是您的应用有多大和有多受欢迎。此标准可能会影响决策过程。

                【讨论】:

                  【解决方案9】:

                  Capistrano + Deprec 用于在 Ubuntu 上实际设置我的堆栈并实际管理部署。

                  Nginx 代理服务器架构的 Mongrel 集群。它不是最新的、最前沿的技术,但它运行良好,它得到了很好的记录,而且即使在小型 VPS 上工作时,它的性能也非常非常高。假设您没有破坏应用程序,您可以 Slashdot 一个 128 MB Slicehost VPS 并且它会不断返回。

                  话虽如此:第一次出现很多的陷阱,直到我弄清楚 Nginx 的实际工作原理。在那之后,它令人惊叹——就像一个带有轻微俄罗斯口音的小 Apachelet。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-11-25
                    • 2017-07-06
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多