2

我在服务器上部署 Rails 应用程序时遇到问题。我正在部署使用Passenger 来提供页面。启动服务器时,我的页面上列出了以下错误。我安装的乘客版本似乎引用了 ruby​​ 1.8.7,但我的应用程序是在 2.0.0 中构建的。我试过删除 ruby​​ 1.8.7 并重新安装Passenger,但到目前为止没有运气。如果我从我的目录运行 ruby​​ -v,它会将版本列为 2.0.0。

Your Ruby version is 1.8.7, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch)
/home/ubuntu/.rvm/gems/ruby-2.0.0-p0@global/gems/bundler-1.3.4/lib/bundler/definition.rb:361:in `   validate_ruby!'
/home/ubuntu/.rvm/gems/ruby-2.0.0-p0@global/gems/bundler-1.3.4/lib/bundler.rb:116:in `setup'
/home/ubuntu/.rvm/gems/ruby-2.0.0-p0@global/gems/bundler-1.3.4/lib/bundler/setup.rb:17
/usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:59:in `gem_original_require'
/usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:59:in `require'
/var/lib/gems/1.8/gems/passenger- 4.0.0.rc4/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
/var/lib/gems/1.8/gems/passenger-4.0.0.rc4/helper-scripts/rack-preloader.rb:73:in `preload_app'
/var/lib/gems/1.8/gems/passenger-4.0.0.rc4/helper-scripts/rack-preloader.rb:127

我的 apache2.conf 文件有以下添加:

Include sites-enabled/
<ifmodule mod_ssl.c>
    NameVirtualHost *:443
</ifmodule>
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 4.0.0.rc4/libout/apache2/mod_passenger.so
   PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.0.rc4
   PassengerRuby /usr/bin/ruby1.8

编辑:答案

我正在使用 sudo 安装乘客和 apache2 模块。应该刚刚输入:

gem install passenger -pre
passenger-install-apache2-module

没有须藤。

4

3 回答 3

2

您的乘客配置指向 ruby​​ 1.8

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 4.0.0.rc4/libout/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.0.rc4
PassengerRuby /usr/bin/ruby1.8

它应该看起来像这样......

LoadModule passenger_module /var/lib/gems/2.0.0/gems/passenger 4.0.0.rc4/libout/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/2.0.0/gems/passenger-4.0.0.rc4
PassengerRuby /usr/bin/ruby2.0.0

乘客安装非常有用,它会在安装成功后在控制台上为您打印这些行。您应该只复制这些行并将它们粘贴到您的 apache conf

于 2013-03-19T05:16:46.950 回答
0

您应该再次尝试安装乘客。

于 2013-03-19T02:35:49.680 回答
0

这就是我从使用 RVM 切换到 RBENV 的原因。RBENV 不会遇到这个问题。加上它更好

如果您在生产服务器上使用 RVM 升级 ruby​​,您将被迫重新安装乘客/nginx(在您的情况下,它看起来只是乘客)。

巨大的痛苦,并导致服务器停机。

改用 RBENV 可以避免这种头痛。使用 RBENV/Capistrano,升级可以简单地通过你的 gemfile 完成,其余的就可以了。

于 2017-03-12T23:47:56.777 回答