Apache-2.2

VPS apache config - 添加最新的乘客 gem 後命令“PassengerDefaultRuby”無效

  • October 1, 2013

曾經在我的 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. 這是為什麼?感謝您的任何幫助。

知道了!

你需要在根級別分配一個預設的 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​​ 版本。

引用自:https://serverfault.com/questions/542874