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:

[ 111]

установлены 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)
[ 1119] из команды gem list Я вижу, что этот камень установлен в среде ruby ​​2.0, но приложение ищет его в usr/local/rvm/gems/ruby-1.9.3-p194@global, а не в ruby-2.0.0-p247@global. Это почему? Спасибо за любую помощь.

1
задан 1 October 2013 в 12:28

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.

0
ответ дан 1 October 2013 в 12:28

Другие вопросы по тегам:

Похожие вопросы: