我有两个ror应用程序,一个是使用ruby 2.0.0和gemet dataentry3(rvm use 2.0.0@dataentry3),另一个是使用ruby 1.9.3@v1。
我试图通过以下方式部署这些应用程序:
rvm use ruby-2.0.0@dataentry3
cd dir/app1
gem install passenger
passenger-install-nginx-module
编辑nginx.conf:

http {
passenger_root /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3;

server {
    listen       80;
    server_name  localhost;
    location / {
        passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p195@dataentry3/ruby;
        root /var/www/adgally/dataentry4/public;
        passenger_enabled on;
    }
}

}

一切正常(http://my-ip)。
在这些步骤之后,我尝试在addresshttp://my-ip/v1上部署第二个应用程序(新的phusion passenger允许运行多个ruby版本,see here
我所做的步骤:
rvm use ruby-1.9.3@v1
cd dir/app2
gem install passenger
编辑nginx.conf:
http {
passenger_root /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3;

server {
    listen       80;
    server_name  localhost;
    location / {
        passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p195@dataentry3/ruby;
        root /var/www/adgally/dataentry4/public;
        passenger_enabled on;
    }
location /v1 {
     passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p429@v1/ruby;
     root /var/www/adgally/v1/public;
     passenger_enabled on;
}
}

}

在此之后,第二个应用程序(http://my-ip/v1)无法工作。我有个错误:
Permission denied - /nonexistent (Errno::EACCES)
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:205:in `each'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:145:in `mkdir'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:162:in `block in compile'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:160:in `each'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:160:in `each_with_index'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:160:in `compile'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:138:in `compile_and_load'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:37:in `start'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/lib/phusion_passenger/native_support.rb:205:in `<top (required)>'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  /usr/local/rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/helper-scripts/rack-preloader.rb:48:in `init_passenger'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/helper-scripts/rack-preloader.rb:126:in `<module:App>'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/helper-scripts/rack-preloader.rb:6:in `<module:PhusionPassenger>'
  /usr/local/rvm/gems/ruby-2.0.0-p195@dataentry3/gems/passenger-4.0.3/helper-scripts/rack-preloader.rb:5:in `<main>'

ruby-2.0.0和ruby-1.9.3乘客宝石之间一定有冲突。我不明白为什么,因为新版《乘客》支持这一点。将passenger_root指令更改为/usr/local/rvm/gems/ruby-1.9.3-p429@v1/gems/passenger-4.0.3后,第二个应用程序开始工作,但第一个应用程序不工作(几乎相同的错误日志)。

最佳答案

您使用rvm use...在系统范围内设置ruby版本
您需要在虚拟主机中使用passengerruby选项,请选中指向乘客文档的此链接:
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerDefaultRuby
同时尝试为每个应用使用单独的虚拟主机。

关于ruby - 为nginx部署在乘客上的多个Ruby on Rails应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16758555/

10-14 13:20
查看更多