2013-03-23 10 views
7

Ruby 1.8.7を主に実行するサーバーがありますが、1.9.3が必要なRails 3.2アプリケーションがあります。私はPassenger 4をインストールしました。これは、仮想サーバーごとに複数のRubyを実行する機能をサポートしているからです。PassengerRubyと異なる宝石セットを持った旅客4

ただし、特定のRubyを割り当てることはできますが、アプリケーションはそのRubyのgemsetにアクセスできないようです。

Ruby interpreter command 
/home/aaron/.rvm/rubies/ruby-1.9.3-p0/bin/ruby 

しかしGEM_HOMEパラメータは別の話告げる:

GEM_HOME = /home/aaron/.rvm/gems/ruby-1.8.7-p352 

が通過探しをだから私は自分のアプリケーションが現在提供しますエラーページに確認されたように、私の仮想サーバは、1.9.3ルビーで構成されていPassenger 4の設定指示文では、別のgemsetを指定する方法がありません。私は何かを逃しているのですか、それともプライムタイムの準備ができていないのでしょうか?

+0

カプリストラノで展開していますか?デフォルトではGEMはローカルにインストールされるため、GEM_HOMEで指定されたパスを完全にバイパスします。完全な解決策ではない場合、実行可能な回避策かもしれません。 – depa

+0

私のアプリケーションをCapistrano経由で動作させるように設定しましたが、うまく動作しませんでした。 Ruby 1.8.7でPassenger 4をインストールすることが問題になります。私が1.9.3の下でPassenger 4を走らせると、それはうまく動作します。しかし、それは無駄です。 :-( –

答えて

21

あなたのgemsetディレクトリの実行から:

$ passenger-config --ruby-command 

それはあなたのApacheとnginxのためのルビーのパスを教えてくれます。

Command: /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 
    Version: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 
    To use in Apache: PassengerRuby /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 
    To use in Nginx : passenger_ruby /home/deric/.rvm/wrappers/[email protected]_gemset/ruby 

Nginx:複数のルビーバージョンを指定できます。だから、特定のサーバ設定用:

your_site.conf:

server { 
    listen 80; 
    root /home/aaron/web/public; 
    passenger_enabled on; 
    passenger_ruby /home/aaron/.rvm/wrappers/[email protected]_gemset/ruby; 
} 

nginx.conf:(これは新しい乗客4.0.17のために働く)

http { 

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; 

} 

ちょうどあなたのgemsetのディレクトリからこれを実行します。

$ passenger-status 

passenger_native_support.soが利用可能かどうかを確認します。あなたのRVMのインストールによって、あなたは今そこにあるのDebian/Ubuntuのためrvmsudo

$ rvmsudo passenger-status 

でそれを実行する必要がありますはるかに簡単にインストールすることができbinary packages of nginx and passenger available

6

Tombartprecompiled Passenger modules(私の場合はApache2用)を使用すると、システムが起動して実行されます。

PassengerRuby /home/of_your_ruby_user/.rvm/wrappers/[email protected]/ruby 

はしかし、RVMを使用している場合、私はあなたが正しいRVMルビーバージョンを選択して、Apacheのバーチャルホストの設定にそうようをgemetする「ラッパーディレクトリ」を使用する必要があるという事実につまずきましたこの方法で、旅客はこのディレクトリ(../../gems/[email protected]/gems)に関連して正しいジェムセットを見つける方法を知っています。それ以外の場合は、同じルビーバージョンの複数のアプリを実行したい場合は、「標準のルビージェムセット」を使用します。 これはNginxと似ているとしか推測できません。

関連する問題