8

我在生产服务器上从 RVM 迁移到 rbenv。我使用“rvm implode”卸载了 rvm,并安装了 rbenv、ruby 1.9.2、rails、passenger 和 nginx-module。除了将passenger_root更改如下之外,我没有修改我原来的nginx.conf:

1st Try:
passenger_root /root/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/passenger-3.0.9;
passenger_ruby /root/.rbenv/versions/1.9.2-p290/bin/ruby;
2nd Try:
passenger_root /root/.rbenv/shims/passenger;
passenger_ruby /root/.rbenv/shims/ruby;

现在,当我尝试运行我的应用程序时,我在 error.log 中看到以下错误:

[error] 1291#0: *105 open() "/home/passenger/grabber/current/public/view" failed (2: No such file or directory)

这清楚地表明乘客尚未启动并且我的 Rails 应用程序无法识别。当我尝试手动启动乘客时,出现以下错误:

   [ pid=17605 thr=70022120 file=utils.rb:176 time=2011-10-23 23:40:41.917 ]: *** Exception LoadError in PhusionPassenger::Rack::ApplicationSpawner (libruby.so.1.9: cannot open shared object file: No such file or directory - /home/passenger/grabber/shared/bundle/ruby/1.9.1/gems/nokogiri-1.5.0/lib/nokogiri/nokogiri.so) (process 17605, thread #<Thread:0x858e7d0>):
from /home/passenger/grabber/shared/bundle/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require'

我已经安装了几次 nokogiri,我可以在我的 gem 列表中看到 nokogiri。我不知道为什么迁移到 rbenv 对我来说破坏了乘客。

4

2 回答 2

21

可以使用 rbenv、nginx 和乘客。有些人已经进行了系统范围的安装。http://blakewilliams.me/blog/4-system-wide-rbenv-install

我目前正在我的开发环境中进行测试,因此假设您已经安装了 rbenv 并且在您的 rbenv init 中有正确的.bashrc

gem install passenger
rbenv rehash
sudo bash -c "source ~/.bashrc && passenger-install-nginx-module"

你必须gem install passenger得到垫片。做bundle install安装乘客不会给你这些。

最后:

passenger-config --root

会给你你的passenger_root路径和:

rbenv which ruby

你的passenger_ruby路径。

乘客 sh​​im 指向可执行文件,但passenger_root必须是文件夹的路径。我试过使用红宝石垫片,但它不起作用。我还没有深入研究为什么。

顺便说一句,我的 Gemfile 中确实有 nokogiri 宝石。哦,如果您有.rvmrc和/或config/setup_load_paths.rb将它们作为乘客自动装载捆绑器移除应该是安全的。

我仍然需要对此进行更多测试,但到目前为止还不错。

于 2011-12-22T19:09:33.230 回答
-14

乘客和 rbenv 之间似乎没有兼容性(确保在你自己踢脚之前知道这一点) - 所以我删除了 rbenv 并移回了 RVM ......

于 2011-10-24T12:35:50.720 回答