Переезд в rbenv перерывы пассажира (nginx)
Я перешел с RVM на rbenv на своем производственном сервере. Я удалил rvm, используя "rvm implode", и установил rbenv, ruby 1.9.2, rails, passenger и nginx-module. Я не изменил свой исходный файл nginx.conf, кроме изменения passenger_root следующим образом:
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)
Это ясно указывает на то, что пассажир не запущен, и мое приложение по рельсам не распознается. Когда я пытаюсь вручную запустить пассажир, я получаю следующую ошибку:
[ 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 несколько раз, и я вижу nokogiri в моем списке драгоценных камней. Я не уверен, почему переезд в rbenv сломал пассажира для меня.
2 ответа
Кажется, что нет совместимости между пассажиром и rbenv (убедитесь, что вы знаете это, прежде чем выстрелить себе в ногу) - поэтому я удалил rbenv и вернулся в RVM...
Можно использовать rbenv, nginx и passenger. Некоторые пошли для общесистемной установки. 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
дорожка.
Пассажирская прокладка указывает на исполняемый файл, но passenger_root
должен быть путь к папке. Я пытался использовать рубиновую прокладку, но она не работает. Я еще не понял почему.
Кстати, у меня есть камень nokogiri в моем Gemfile. О, также если у вас есть .rvmrc
и / или config/setup_load_paths.rb
это должно быть безопасно удалить их как пассажирский пакет автозагрузки.
Мне все еще нужно сделать немного больше испытаний по этому вопросу, но пока все хорошо.