【问题标题】:My Rails App is not working because passenger is not working我的 Rails 应用程序不工作,因为乘客不工作
【发布时间】:2017-09-21 09:53:13
【问题描述】:

在服务器中,我安装了rails、rvm、apache2和passenger,安装后我将rails应用程序拖放到服务器上,它显示this error

在 apache2/error/log 中,显示 bundler 加载错误

App 9573 stdout:
[ 2017-09-21 09:38:10.4331 9419/7f8c7920d700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /var/www/html/vpn_check: An error occurred while starting up the preloader.
  Error ID: 9c91492c
  Error details saved to: /tmp/passenger-error-lZdumg.html
  Message from application: cannot load such file -- bundler/setup (LoadError)
  /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:430:in `activate_gem'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:297:in `block in run_load_path_setup_code'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:435:in `running_bundler'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:296:in `run_load_path_setup_code'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:100:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

我不确定我为什么会收到此错误。谁能帮帮我。

谢谢

【问题讨论】:

  • 尝试安装bundler
  • 我安装了 bundler 并且出现了同样的问题。感谢您的评论。
  • 粘贴以下内容的输出:gem envwhich bundler。还包括您的 Apache 配置文件。
  • 我的 ruby​​ 版本 - 2.4.1,rvm 版本 - 1.29.3,rails - 5.1.4,$gem install bundler Successfully installed bundler-1.15.4 Parsing documentation for bundler-1.15.4 Done installing documentation for bundler after 8 seconds 1 gem installed 和我的捆绑器版本 - 1.15.4
  • Passenger 可能正在使用不同版本的 ruby​​ 运行(我怀疑乘客没有使用 rvm 的 ruby​​ 运行,而是使用默认的系统 ruby​​)。查看gem env 将有助于消除此类假设。

标签: ruby-on-rails apache passenger


【解决方案1】:

您必须在 apache 配置中配置 rvm ruby​​ 版本。 在您的情况下,乘客在 /usr/lib/ruby 中使用 ruby​​ 版本,而不是 rvm ruby​​ 版本。

如果你只使用一个rvm gemset,你必须在Passenger apache模块(apache/mods-available/passenger.conf)中配置ruby版本和ruby gemset:

PassengerRoot /home/user/.rvm/gems/ruby-version@gemset/gems/passenger-5.1.2
PassengerDefaultRuby /home/user/.rvm/gems/ruby-version@gemset/wrappers/ruby

如果您有多个应用程序以不同的 rvm 配置运行,您必须在 vhost 文件中指定 ruby​​ 版本。

示例:

<Location /appli1>
  PassengerRuby /home/user/.rvm/gems/ruby-2.1@app1/wrappers/ruby
  RackEnv production
  RackBaseURI /appli1
  Options -MultiViews
</Location>
<Location /appli2>
  PassengerRuby /home/user/.rvm/gems/ruby-2.2@app2/wrappers/ruby
  RackEnv production
  RackBaseURI /appli2
  Options -MultiViews
</Location>

【讨论】:

  • 我已将路径放入 apache2/mods-available/passenger.conf,但仍然出现加载错误 :(
  • 你重启了 apache 吗?你能显示passenger.conf和passenger.load的内容吗?
  • 是的,我重新启动了我的 apache,然后尝试了。不管怎样,这是我的passenger.conf 文件&lt;IfModule mod_passenger.c&gt; PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.4.1@global/wrappers/ruby PassengerDefaultRuby /usr/bin/ruby &lt;/IfModule&gt; 这是我的passenger.load 文件LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
  • 那里有两条PassengerDefaultRuby 行。
  • 无论如何,我删除了该行并尝试了一次仍然相同。
【解决方案2】:

这还没有完成,所以我按照它的顺序重新安装了乘客及其依赖项。参考这个link来安装passenger和它的依赖。

谢谢大家帮助我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 2012-11-07
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多