乘客使用错误的 ruby 版本
Passenger using wrong ruby version
我在 Apache 上 运行 多个网站,在 CentOS 服务器上安装了 Passenger 4.0.45。我也使用 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 的其他网站].
我找到了问题的答案。我会解释我做了什么:
- rvm install 2.4.2(安装Ruby版本2.4.2)
- rvm use 2.4.2(使用Ruby2.4.2版本)
- gem安装乘客(安装乘客gem)
- passenger-install-apache2-module(这将指导您完成 Apache 的 Passenger 模块的安装。大约需要 3 分钟)
- 在 Passenger 模块安装完成后,我用安装摘要指定的新
LoadModule
和 PassengerRoot
更新了我的 httpd.conf
文件)
- rvmsudo passenger-config validate-install(检查 Passenger 是否安装正确)
- sudo service httpd restart(重启 Apache)
执行上述命令后,我的 Rails 5.1 新应用程序在较低 Ruby/Rails 版本上与服务器 运行 中的所有其他站点一样工作。
我在 Apache 上 运行 多个网站,在 CentOS 服务器上安装了 Passenger 4.0.45。我也使用 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 的其他网站].
我找到了问题的答案。我会解释我做了什么:
- rvm install 2.4.2(安装Ruby版本2.4.2)
- rvm use 2.4.2(使用Ruby2.4.2版本)
- gem安装乘客(安装乘客gem)
- passenger-install-apache2-module(这将指导您完成 Apache 的 Passenger 模块的安装。大约需要 3 分钟)
- 在 Passenger 模块安装完成后,我用安装摘要指定的新
LoadModule
和PassengerRoot
更新了我的httpd.conf
文件) - rvmsudo passenger-config validate-install(检查 Passenger 是否安装正确)
- sudo service httpd restart(重启 Apache)
执行上述命令后,我的 Rails 5.1 新应用程序在较低 Ruby/Rails 版本上与服务器 运行 中的所有其他站点一样工作。