VPS apache config - Неверная команда '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
Я вижу, что этот гем установлен в среде ruby 2.0, но приложение ищет его в usr/local/rvm/gems/ruby-1.9.3-p194@global
, Это почему? Спасибо за любую помощь.
1 ответ
Понял!
вам нужно назначить рубин по умолчанию на корневом уровне, остальные вы будете устанавливать в 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
сейчас по умолчанию.
Также, если у вас есть другие пассажирские модули rvm, загруженные в файл apache2.config, как в моем случае, у меня было:
# 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
вам нужно удалить их или прокомментировать, как я сделал, так как вы загрузите версию ruby в /etc/apache2/sites-enabled/mysite
Конфигурационный файл
нота!
Это будет работать только на пассажирах> 4.0.0. Я проверил это на пассажирском 3.0.8, и это не работает. Обратите внимание, что PassengerDefaultRuby был представлен в пассажирской версии 4.0.0, см. Modrails.com/documentation/….