Phusion Passenger Web应用程序无法启动/选择错误的ruby

时间:2014-05-19 08:16:57

标签: ruby-on-rails-3 gem passenger

我的RoR应用无法启动,错误:

  

看起来Bundler无法找到宝石。也许你没有安装   这个应用程序需要的所有宝石。请安装你的宝石   运行:

     

捆绑安装

     

如果这不起作用,则问题可能是由您造成的   应用程序在不同于预期的环境下运行   至。请检查以下内容:

Is this app supposed to be run as the railsapp user?
Is this app being run on the correct Ruby interpreter? Below you will see which Ruby interpreter Phusion Passenger attempted to use.

Ruby interpreter command

    /usr/bin/ruby1.8

文件config / environment.rb归railsapp用户所有。 我使用rbenv,并将ruby版本2.1.1安装为全局版本。 我使用bundler来安装gem依赖项。哪一切都好。

所以看起来,phusion乘客选择了错误的ruby版本(至少不是我用rbenv安装的全局版本)。

如何使用rbenv安装的ruby版本使Phusion乘客编译mod_rails?

当我跑:passenger-install-apache2-module时,我注意到它从ubuntu中选择了系统安装的ruby版本:

* Checking for Ruby development headers...
      Found: yes
      Location: /usr/lib/ruby/1.8/i486-linux/ruby.h

但是像railsapp用户那样'ruby'给出了这个:

/home/railsapp/.rbenv/shims/ruby

我的宝石环境是这样的:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [i686-linux]
  - INSTALLATION DIRECTORY: /home/railsapp/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /home/railsapp/.rbenv/versions/2.1.1/bin/ruby
  - EXECUTABLE DIRECTORY: /home/railsapp/.rbenv/versions/2.1.1/bin
  - SPEC CACHE DIRECTORY: /home/railsapp/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/railsapp/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0
     - /home/railsapp/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/railsapp/.rbenv/versions/2.1.1/bin
     - /etc/rbenv/libexec
     - /home/railsapp/.rbenv/shims
     - /etc/rbenv/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games

3 个答案:

答案 0 :(得分:1)

对于apache / nginx,您可以执行以下操作:

which passenger-config

rvm use 2.2.1 # Use the version you want

opt/passenger/bin/passenger-config --ruby-command # Use the path that was returned by the firth command.

来源:https://www.phusionpassenger.com/library/config/nginx/reference/#setting_correct_passenger_ruby_value

答案 1 :(得分:0)

使用PassengerRuby配置选项。请参阅官方文档。

答案 2 :(得分:0)

Apache / Passenger特定

我已经完成了这个,答案就在于httpd.conf(通常位于/etc/httpd/conf/httpd.conf)Apache LoadModule在您更新Ruby或乘客版本。

在正确配置的文件的底部附近,您会看到一个可能会出现类似内容的部分:

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-  4.0.48/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.48
 PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby

更改LoadModule,确保更新ruby-2.X.Xpassenger-X.X.X。您还必须更新Passenger的依赖项,which are best done through a reinstall (so you generate the correct symlinks).