VPS apache 配置-添加最新的 Passenger 宝石后,命令“PassengerDefaultRuby”无效

VPS apache 配置-添加最新的 Passenger 宝石后,命令“PassengerDefaultRuby”无效

我的 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 ]

安装passengerpassenger-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​​ 版本。

相关内容