1

我有一个使用乘客、nginx 和 capistrano 的生产应用程序。我在没有 RVM 的情况下设置了它(在没​​有版本管理器的情况下直接在 Ubuntu 上运行安装到操作系统的 ruby​​),但想切换到使用 RVM,以便我可以在需要时升级 ruby​​。

我需要采取哪些步骤来安装 RVM 并配置乘客/nginx/capistrano 以使用它?

这里的关键是我已经让服务器运行了,并且停机时间需要最少/过夜,因为该应用程序每天都在生产环境中使用。我不能把应用程序搞砸太久。

我最好的猜测是我需要修改我的 nginx 配置(sudo nano /opt/nginx/conf/nginx.conf) - 并编辑这些行:(?)

http {
    passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19;
    passenger_ruby /usr/local/bin/ruby;
4

1 回答 1

0

按照rvm.io上的说明进行安装rvm。但是,强烈建议您不要在生产中使用它。生产设置应遵循 KISS 原则。您安装的每一个附加软件都会给设置增加一点复杂性。鉴于rvm所做的只是提供一组方便的命令来安装 ruby​​ 和更改PATH变量,因此它不是生产设置中必不可少的工具。

如果您只需要能够安装新版本的 ruby​​ 而不会搞砸,请使用ruby​​-install。这使得安装 ruby​​ 很容易,但不会操纵环境设置(例如PATH)。

正如你上面提到的,你是对的,你应该在 nginx 配置中更改指向 ruby​​ 可执行文件的指针来切换 ruby​​ 版本。在生产模式下,这不会停止/中断正在运行的 rails 应用程序,直到您重新启动 nginx。因此在另一个文件夹(例如/usr/local/rubies/ruby-193-p448//usr/local/rubies/ruby-200-p0/)中安装新版本的 ruby​​ 是安全的,更改passenger_rubynginx 设置以指向新的 ruby​​,然后重新启动 nginx。

另请注意,从Passenger 4.0.x开始,您可以将多个版本的ruby 与单个nginx/passenger 组合一起使用,一个用于运行passenger,另一个用于您的rails 应用程序,使用块和/或配置块中的passenger_ruby指令。httpservernginx

于 2013-10-15T08:35:31.903 回答