乘客使用错误的红宝石版本

时间:2017-12-21 19:41:12

标签: ruby-on-rails ruby apache rvm passenger

我在CentOS服务器上使用Passenger 4.0.45在Apache上运行多个网站。我使用rvm 1.25.27安装了多个ruby版本,过去3年我使用的是Ruby 2.1.2版本。 我现在用Rails 5.1开始了一个新的应用程序,我需要安装Ruby 2.4.2。在部署了我的应用程序后,我得到了一个Internal Server Error,这是我在错误日志中遇到的错误:

App 10033 stderr: /usr/local/rvm/gems/ruby-2.1.2@rails-4.0/gems/passenger-4.0.45/lib/phusion_passenger/request_handler.rb:356:in `trap'
App 10033 stderr: :
App 10033 stderr: Invalid argument - SIGKILL
App 10033 stderr:  (
App 10033 stderr: Errno::EINVAL
App 10033 stderr: )

我注意到显示的ruby版本是ruby-2.1.2@rails-4.0,我认为它应该是2.4.2因为我在VirtualHost文件中指定的版本:

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot /.../current/public
   PassengerRuby /home/user/.rvm/wrappers/ruby-2.4.2@global/ruby
   <Directory 
        /home/user/.../current/public>
        AllowOverride all
        Options -MultiViews
  </Directory>
</VirtualHost>

我已经在https://github.com/phusion/passenger/issues/1362上读到了这个错误,但我不知道是否可以更新Passenger,而不会搞乱我使用旧版Ruby运行的其他网站。

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案。我将解释我的所作所为:

  • rvm install 2.4.2(安装Ruby版本2.4.2)
  • rvm使用2.4.2(使用Ruby 2.4.2版本)
  • gem install passenger(安装Passenger gem)
  • passenger-install-apache2-module(这将指导您完成Apache的Passenger模块的安装。大约需要3分钟)
  • 在Passenger模块的安装过程之后,我已使用安装摘要指定的新httpd.confLoadModule更新了我的PassengerRoot文件。
  • rvmsudo passenger-config validate-install(检查Passenger是否安装正确)
  • sudo service httpd restart(重启Apache)

完成上述命令之后,我使用Rails 5.1的新应用程序和运行在较低Ruby / Rails版本上的服务器中的每个其他站点一样。