Apache-2.2
VPS apache config - 添加最新的乘客 gem 後命令“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 ]
安裝
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
. 這是為什麼?感謝您的任何幫助。
知道了!
你需要在根級別分配一個預設的 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 版本。