Ruby on rails 3 无法启动Phusion乘客Web应用程序/选择错误的ruby

Ruby on rails 3 无法启动Phusion乘客Web应用程序/选择错误的ruby,ruby-on-rails-3,gem,passenger,Ruby On Rails 3,Gem,Passenger,我的RoR应用无法启动,错误为: 看起来Bundler找不到宝石了。也许你没有安装 此应用程序需要的所有宝石。要安装您的gems,请 运行: 捆绑安装 如果这不起作用,那么问题可能是由您的 应用程序在不同于预期的环境下运行 到请检查以下内容: 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 w

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

看起来Bundler找不到宝石了。也许你没有安装 此应用程序需要的所有宝石。要安装您的gems,请 运行:

捆绑安装

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

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.
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.

文件config/environment.rb归railsapp用户所有。 我使用rbenv,并安装ruby 2.1.1版作为全局版本。 我使用bundler安装gem依赖项。没关系

看来,phusion passenger选择了错误的ruby版本(至少不是我用rbenv作为global安装的版本)

如何让Phusion乘客使用随rbenv一起安装的ruby版本编译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

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

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

特定于Apache/乘客的

我已经这样做了,答案就在
httpd.conf
(通常位于
/etc/httpd/conf/httpd.conf
)当您更新Ruby或passenger版本时,Apache
LoadModule
会变得异常

在正确配置的文件底部附近,您将看到一个部分,可能会这样说:

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乘客舱/usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.48/buildout/apache2/mod乘客舱
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.X
passenger-X.X.X
。您还必须更新乘客的依赖项,

特定于Apache/乘客的

我已经这样做了,答案就在
httpd.conf
(通常位于
/etc/httpd/conf/httpd.conf
)当您更新Ruby或passenger版本时,Apache
LoadModule
会变得异常

在正确配置的文件底部附近,您将看到一个部分,可能会这样说:

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乘客舱/usr/local/rvm/gems/ruby-2.1.2/gems/passenger-4.0.48/buildout/apache2/mod乘客舱
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.X
passenger-X.X.X
。您还必须更新乘客的依赖项,

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

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.
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.

来源:

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

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.
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.

资料来源:

OP需要如何以及在哪里这样做?它也许能回答这个问题,但它不需要更多的上下文吗?谢谢洪丽,读一下他写的手册?顺便说一句,在文档中你提到了“全局服务器配置”,那么你这是什么意思?@rene是官方的Phusion乘客网站,当然是在“文档”下。这不是第一个查找文档的地方吗?@user2736833 web服务器配置文件由上下文组成。存在全局上下文、每个虚拟主机上下文、每个位置上下文等。对于Apache,请参阅。Nginx没有相应的文档,但概念是相同的。@Hongli我并不是说看那里不明显,但我希望你能在这里总结一下文档中发现的内容……但可能只有我……OP需要如何以及在哪里这样做?它也许能回答这个问题,但它不需要更多的上下文吗?谢谢洪丽,读一下他写的手册?顺便说一句,在文档中你提到了“全局服务器配置”,那么你这是什么意思?@rene是官方的Phusion乘客网站,当然是在“文档”下。这不是第一个查找文档的地方吗?@user2736833 web服务器配置文件由上下文组成。存在全局上下文、每个虚拟主机上下文、每个位置上下文等。对于Apache,请参阅。Nginx没有相应的文档,但概念是相同的。@Hongli我并不是说看那里不明显,但我希望你能在这里总结一下在文档中发现的东西……但也许那只是我。。。