【问题标题】:Upgrading ruby on a production server with Rails and Passenger使用 Rails 和 Passenger 在生产服务器上升级 ruby
【发布时间】:2015-05-18 23:37:37
【问题描述】:

我有几个 Rails 应用程序,每个应用程序都在自己的服务器上运行。它们在Passenger-apache 下运行,目前在ruby 1.9.3 下运行。目前,它们在使用 rbenv 安装和管理的 ruby​​ 下运行。

我想将它们全部升级到 ruby​​ 2.2.x。只要我这样做,我也想将它们从乘客 4.x 升级到 5.x。

假设我已经在我的开发箱上测试了它们,并且确信它们在 ruby​​ 2.2 下运行良好。

在我思考这个问题时,我对最好的方法感到非常困惑——尤其是在生产停机时间最短的情况下。

我想我会先在 rbenv 下安装 ruby​​ 2.2,理论上它不应该干扰正在运行的应用程序。乘客安装在特定的 ruby​​ 下,但随后可以选择在不同的 ruby​​ 下运行应用程序。我应该先安装最新的乘客,在新的 ruby​​ 2.2 下,但配置为在旧的 ruby​​ 下运行现有的应用程序?然后将应用程序升级到新的 ruby​​ ......我想涉及再次运行 bundle install,以在新的 ruby​​ 下安装所有依赖项?

或者完全是别的什么?有没有一种相对安全的方法来做到这一点,并且我的应用程序的停机时间有限或为零?

以前有人做过吗?我已经相当熟悉所有的部分,并且可以自己集思广益可能的方法,但是当我开始时,有太多地方我不确定最好的方法是什么。我真正可以使用的是已经这样做过的人的建议,或者非常确定他们推荐的内容会像他们所说的那样起作用——而不仅仅是猜测你没有做过的事情可能会起作用。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby deployment passenger


    【解决方案1】:

    确保您的应用程序在新的 ruby​​ 版本下运行。我有一些旧版 Rails 3.2.x 应用程序可以在 ruby​​ 2.1.5 上运行,但在 ruby​​ 2.2.x 中会中断。您应该可以更新您的 ruby​​ 和乘客版本。

    由于每个应用程序都在自己的服务器上运行,因此您不必担心运行多个版本的passenger。您应该能够在每台服务器上安装新版本的 ruby​​,安装 gems,将 apache 更新到较新的乘客并重新启动 apache 以使一切生效。最坏的情况是,您可以将服务器克隆到虚拟环境并在生产之前测试所有内容。这将帮助您最大限度地减少停机时间,因为您可以在接触生产环境之前完成任何变​​通方法和/或错误研究。

    【讨论】:

    • 谢谢!是的,我应该这么说,我会添加它,假设我已经测试并且知道我的应用程序可以工作。我的问题是关于我需要采取哪些步骤,以什么顺序升级所有东西,停机时间为零或最短。我想也许你已经回答过了,但我还是有点困惑,你介意把它改成 1,2,3 一步一步吗?
    • 最好能详细说明每个步骤是如何完成的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多