Configuração do Apache VPS - Comando inválido 'PassengerDefaultRuby' após adicionar a última jóia do passageiro

1

costumava ter essa lista de rubis no meu 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 ]

hoje eu instalei um novo aplicativo neste vps em ruby 2.0 , então adicionei 2.0 a 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 ]

instalou passenger e passenger-apache-module , as instruções dizem para adicionar estas linhas:

   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

para /etc/apache2/apache2.conf e reinicie o apache, depois do reinício recebi este erro :

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!

e mais um problema , quando eu abro meu aplicativo no link eu tenho:

Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)

do comando gem list Eu posso ver que esta jóia está instalada no ambiente ruby 2.0, mas o aplicativo procura por ela em usr/local/rvm/gems/ruby-1.9.3-p194@global e não em ruby-2.0.0-p247@global . Por que é que? Obrigado por qualquer ajuda.

    
por rmagnum2002 01.10.2013 / 10:28

1 resposta

1

Entendi!

você precisa ter um ruby padrão atribuído no nível da raiz, os outros que você definirá em sites-enabled arquivos de configuração. Por exemplo, no meu arquivo 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

em /etc/apache2/sites-enabled/mysite que aciona o aplicativo que deve funcionar em ruby-1.9.3 , adicionarei 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>

para o aplicativo que funciona com ruby-2.0 , não é necessário adicionar a opção PassengerRuby , pois ruby-2.0 é o padrão agora.

Além disso, se você tiver outros módulos de passageiro rvm carregados no arquivo apache2.config, como no meu caso, eu tive:

#   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

você precisará removê-los ou comentá-los como eu fiz, já que você carregará a versão ruby no arquivo /etc/apache2/sites-enabled/mysite config.

    
por rmagnum2002 01.10.2013 / 11:10