VPS apache 配置 - 添加最新的乘客 gem 后命令“PassengerDefaultRuby"无效 [英] VPS apache config - Invalid command 'PassengerDefaultRuby' after adding latest passenger gem
问题描述
曾经在我的 vps 中有这个红宝石列表:
used to have this list of rubies in my 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 ]
今天我在 ruby 2.0
上的这个 vps 上安装了一个新应用,所以我在 rvm
中添加了 2.0:
today I installed a new app on this vps on ruby 2.0
, so I added 2.0 to 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
,说明说要添加这些行:
installed passenger
and passenger-apache-module
, instructions says to add these lines:
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,重启后我得到这个错误:
to /etc/apache2/apache2.conf
and restart apache, after restart I got this error:
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 我得到了:
and one more problem, when I open my app at http://nccm.md I got:
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
.这是为什么?感谢您的帮助.
from gem list
command I can see this gem is installed in ruby 2.0 environment, but the app looks for it in usr/local/rvm/gems/ruby-1.9.3-p194@global
. Why is that? Thank you for any help.
推荐答案
知道了!
您需要在根级别分配一个默认的 ruby,其他的您将在 sites-enabled
配置文件中设置.例如,在我的 apache2.conf
文件中:
you need to have a default ruby assigned at root level, the other ones you'll set in sites-enabled
configuration files. For example, in my apache2.conf
file:
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
中运行的应用程序,我将添加 乘客Ruby/usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
:
then in /etc/apache2/sites-enabled/mysite
that fires up the app that should work in ruby-1.9.3
I'll add 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
现在是默认选项.
for the app that works with ruby-2.0
no need to add PassengerRuby
option as ruby-2.0
is the default one now.
此外,如果您在 apache2.config 文件中加载了其他 rvm 乘客模块,就像我的情况一样:
Also if you have other rvm passenger modules loaded in apache2.config file, like in my case I had:
# 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 版本.
you'll need to remove them or comment them as I did, as you'll load the ruby version in /etc/apache2/sites-enabled/mysite
config file.
注意!
这仅适用于乘客 > 4.0.0.我已经对此进行了测试乘客 3.0.8 并且它不起作用.请注意,PassengerDefaultRuby在乘客版本 4.0.0 中引入,请参阅modrails.com/documentation/....
This will only work on passenger > 4.0.0. I have tested this on passenger-3.0.8 and it does not work. Note that PassengerDefaultRuby was introduced in passenger version 4.0.0, see modrails.com/documentation/….
这篇关于VPS apache 配置 - 添加最新的乘客 gem 后命令“PassengerDefaultRuby"无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!