我的 VPS 中曾经有以下红宝石列表:
ruby-1.9.2-p320 [ i686 ]
=* ruby-1.9.3-p194 [ i686 ]
ruby-1.9.3-p374 [ i686 ]
ruby-1.9.3-p392 [ i686 ]
今天我在 上的这个 vps 上安装了一个新应用程序ruby 2.0
,因此我将 2.0 添加到rvm
:
ruby-1.9.2-p320 [ i686 ]
ruby-1.9.3-p194 [ i686 ]
ruby-1.9.3-p374 [ i686 ]
ruby-1.9.3-p392 [ i686 ]
=* ruby-2.0.0-p247 [ i686 ]
安装passenger
后passenger-apache-module
,说明添加以下几行:
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby
并/etc/apache2/apache2.conf
重新启动 apache,重新启动后我得到了这个错误:
Syntax error on line 242 of /etc/apache2/apache2.conf:
Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
还有一个问题,当我打开我的应用程序时http://nccm.md我有:
Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
从gem list
命令中我可以看到这个 gem 安装在 ruby 2.0 环境中,但是应用程序在 中查找它,usr/local/rvm/gems/ruby-1.9.3-p194@global
而不是在 中ruby-2.0.0-p247@global
。这是为什么?谢谢你的帮助。
答案1
知道了!
您需要在根级别分配一个默认的 ruby,其他的您将在sites-enabled
配置文件中设置。例如,在我的apache2.conf
文件中:
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby
然后在/etc/apache2/sites-enabled/mysite
启动应该可以工作的应用程序中ruby-1.9.3
我将添加PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
:
<VirtualHost xxx.xx.xx.xx:80>
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
ServerName mysite.md
DocumentRoot /home/apps/myapp/public
<Directory /home/apps/myapp>
AllowOverride None
Options -MultiViews
</Directory>
</VirtualHost>
ruby-2.0
对于无需添加PassengerRuby
选项的应用程序,ruby-2.0
现在它是默认选项。
此外,如果您在 apache2.config 文件中加载了其他 rvm 乘客模块,就像我的情况一样:
# LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
# PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.18
# PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
您需要像我一样删除它们或对它们进行注释,因为您将在/etc/apache2/sites-enabled/mysite
配置文件中加载 ruby 版本。