Назад | Перейти на главную страницу

Конфигурация VPS apache - недопустимая команда 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 а не в ruby-2.0.0-p247@global. Это почему? Спасибо за любую помощь.

Понял!

вам нужно назначить рубин по умолчанию на корневом уровне, остальные вы установите в 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

вам нужно будет удалить их или прокомментировать, как это сделал я, так как вы загрузите рубиновую версию в /etc/apache2/sites-enabled/mysite файл конфигурации.