Ruby on rails 如何在Ubuntu上切换生产rails应用程序(乘客/nginx/capistrano)以使用RVM?

Ruby on rails 如何在Ubuntu上切换生产rails应用程序(乘客/nginx/capistrano)以使用RVM?,ruby-on-rails,nginx,rvm,capistrano,passenger,Ruby On Rails,Nginx,Rvm,Capistrano,Passenger,我有一个使用passenger、nginx和capistrano的生产应用程序。我在没有RVM的情况下设置了它(运行ruby直接安装到Ubuntu上的操作系统,没有版本管理器),但我想切换到使用RVM,以便在需要时升级ruby 安装RVM和配置乘客/nginx/capistrano使用RVM需要采取哪些步骤 这里的关键是,我已经让服务器运行,停机时间需要最小化/一夜,因为应用程序每天都在生产环境中使用。我不能把程序搞得一团糟,让它停太久 我最好的猜测是,我需要修改我的nginx配置(sudo n

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

安装RVM和配置乘客/nginx/capistrano使用RVM需要采取哪些步骤

这里的关键是,我已经让服务器运行,停机时间需要最小化/一夜,因为应用程序每天都在生产环境中使用。我不能把程序搞得一团糟,让它停太久

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

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

如果您所需要的只是能够安装ruby的新版本而不会把事情搞砸,那么使用。这使得安装ruby很容易,但不会操作环境设置(例如
PATH

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


还请注意,从现在起,您可以使用多个版本的ruby与单个nginx/passenger组合,一个用于运行passenger,另一个用于rails应用程序,使用
http
block和/或
nginx
配置的
passenger\u ruby
指令,但是我很肯定你得到了否决票,因为RVM或rbenv通常用于生产环境。我已经有一位值得信赖的Rails开发人员建议我尽早转向RVM,特别是在将来需要的时候能够轻松升级和降级ruby版本。话虽如此,我认为你的观点很好。我可能会贯彻你的建议。我会让你知道它是如何发展的,或者我走的是什么道路。韦恩·塞古因自己说过,他建造的
rvm
是为了生产使用。但那是在
rvm
成为今天的样子之前。可能有这样的用例。但请询问任何一直在处理生产系统的devops。越少越好。如果你想要一个方便的工具,有更好的选择-
rvm
对于生产使用来说是不必要的复杂。我会选择
chruby
ruby安装
,如果我必须使用其中一个。但是谢谢,你听到我的意思了。
http {
    passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19;
    passenger_ruby /usr/local/bin/ruby;