6

Phusion Passenger を Nginx でインストールし、Nginx が適切なディレクトリを指すように構成しました。次に、webapp ディレクトリを実行しましたが、これで gemfile がダウンロードされましたが、gem が見つかりません。

サイトにアクセスすると、次のような標準の Passenger エラー ページが表示されます。

Error message:
no such file to load -- bundler

完全なエラーは次のとおりです。http://tinypic.com/view.php?pic=vpx36r&s=7

やったgem install bundlerので、バンドラーがインストールされていることはわかっていますが、宝石の場所が間違っていると思います。

Passenger が ruby​​-enterprise-1.8.7 をインストールしたように見えますが、このボックスには 1.8 が既にインストールされているようです。

gem env は私に次のことを教えてくれます:

  - RUBYGEMS VERSION: 1.4.2
  - RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /opt/local/ruby-enterprise-1.8.7-2010.01/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/local/ruby-enterprise-1.8.7-2010.01/bin
  - RUBYGEMS PLATFORMS:
      - ruby
      - x86_64-linux
    - GEM PATHS:
      - /opt/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8
 - /root/.gem/ruby/1.8
    - GEM CONFIGURATION:
       - :update_sources => true
       - :verbose => true
       - :benchmark => false
       - :backtrace => false
       - :bulk_threshold => 1000
    - REMOTE SOURCES:
       - http://rubygems.org/

私が読んだことから、それはパスの問題のように見えますが、それを修正するための最善の行動方針はわかりません.

ここに出力があります

どのルビー:

/opt/local/ree/bin/ruby

どのバンドル:

/opt/local/ree/bin/bundle

そのディレクトリで bundle install を実行したところ、次のように表示されました。

Your bundle is complete! It was installed into ./vendor/bundle
4

1 に答える 1

8

パスに問題があるようです(すでに述べたように)。Ruby のインストールに 2 つの異なるパスがある理由を確認してください。

つまり、あなたのgem env出力によると、いくつかのインストールがあります

 /opt/local/ruby-enterprise-1.8.7-2010.01/

しかし、あなたはルビーとバンダーも持っています

/opt/local/ree/

したがって、ここから始めて、すべてのパスが正しいかどうか、および/または二重インストールがないかどうかを確認します (ENV が一貫しているかどうかを確認するだけで十分です)。

別の問題が nginx.conf に関連している可能性があります。次のようなものがあるはずです。

[...]
 http {
  passenger_root /your/path/to/passenger/gem;
  passenger_ruby /path/to/ruby;
  [...]
 }

更新(nginx.confで追加のコメントを見ただけです):

ご覧のとおり、パスに問題があります。ruby と gems のインストールには 2 つのパスがあります。

/opt/local/ruby-enterprise....

/opt/local/ree

後者を削除する必要があります(物理的にではなく、最初のものを指すようにENVを確認してください)

編集: 環境を変更するには、次の行を/etc/bash.bashrcに追加します(または、デフォルトでシェルからロードされるファイルは何でも):

PATH="/opt/local/ruby-enterprise-1.8.7-2010.01/bin:$PATH"

次に、ログアウトしてログインするか、簡単なテストのために、シェルから次のコマンドを起動します。

ソース/etc/bash.bashrc

ここで、デフォルトでどのバイナリが使用されているかを再試行します。

which ruby
which gem
which rake
gem env
...

すべてに/opt/local/ruby-enterprise-1.8.7-2010.01/プレフィックスが必要です (これは、nginx およびパッセンジャー構成から使用されるものです)。

UPDATE2 : コメントから、少なくとも 3 つの ruby​​ インストールがあることがわかりました:

  • /usr/lib/ruby/ のパッケージ マネージャーから ruby​​ をダウンロードします (ubuntu linux を使用していますか?)
  • /opt/local/ree/ のルビー
  • /opt/local/ruby-enterprise-... のルビー

この時点で、最善の方法は次のとおりです。

  • /opt/local/ の下にあるすべての ruby​​ とそのすべての gem をアンインストールします。
  • システム提供の ruby​​ パッケージをアンインストール (パージ) します (必要ありません)。

  • RVM のインストールとセットアップ: https://rvm.io

  • RVM を使用してパッセンジャーを再インストールします: https://rvm.io/integration/passenger/
  • nginx.conf をパッセンジャー パスと Ruby を使用するように修正
于 2011-06-20T10:35:27.540 に答える