1

以前は、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 ]

インストール済みpassengerpassenger-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

Apacheを再起動する/etc/apache2/apache2.confと、再起動後に次のエラーが発生しました:

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!

もう1つの問題、http : //nccm.mdでアプリを開くと、次のようになりました。

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

コマンドから、gem listこのgemがruby 2.0環境にインストールされていることがわかりますが、アプリはusr/local/rvm/gems/ruby-1.9.3-p194@global. 何故ですか?助けてくれてありがとう。

4

1 に答える 1

4

とった!

ルート レベルでデフォルトの ruby​​ を割り当てる必要があり、他のものは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を追加する必要なく動作するアプリの場合。PassengerRubyruby-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構成ファイルに ruby​​ バージョンをロードするので、それらを削除するか、私が行ったようにコメントする必要があります。

ノート!

これは Passenger > 4.0.0 でのみ機能します。これを Passenger-3.0.8 でテストしましたが、動作しません。PassengerDefaultRuby はパッセンジャー バージョン 4.0.0 で導入されたことに注意してください。 modrails.com/documentation/… を参照してください。

于 2013-10-01T09:08:48.743 に答える