раньше у меня был этот список рубинов в моем 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
:
установлены 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
. Это почему? Спасибо за любую помощь.
Понятно!
вам нужно назначить рубин по умолчанию на корневом уровне, остальные вы установите в 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
.