レール + パッセンジャー + Apache の実稼働デプロイメント:「Rails 2.3.5 gem がありません」がインストールされています
-
26-09-2019 - |
質問
約 1 週間ウェブ上を探しましたが、問題の解決策が見つかりませんでした。Ruby on Rails アプリケーションを実稼働環境の Ubuntu 10.04 サーバー エディション ボックスにデプロイしようとしています。Apache2.2とPassenger3.0.0をRuby 1.8.7、Rails 2.3.5、RubyGems 1.3.7とともにインストールしました。私のRailsアプリケーションは次のとおりです /var/rails_app_name/
また、rubygems/ruby は次の場所にインストールされます。 /var/lib/gems/1.8
私はubuntu 10.04(guiエディション)を搭載したテストサーバーを持っており、同じセットアップと構成を実行していますが、これは魅力的に機能します。唯一の違いは、私の Rails アプリケーションのルートがユーザーのローカルフォルダーにあることです。 /home/username/rails_app_name/
私の問題は、運用サーバー上で、Passenger が次のエラーを表示することです。 "Missing the Rails 2.3.5 gem. Please 'gem install -v=2.3.5 rails'. update your RAILS_GEM_VERSION...."
gem 環境を実行して、リストされている両方の gem ディレクトリに Rails gem をインストールしました。いくつかの構成結果を次に示します。
%> gem environment
- ルビージェムのバージョン:1.3.7
- ルビーのバージョン:1.8.7 (2010-01-10 パッチレベル 249) [i486-linux]
- インストールディレクトリ:/var/lib/gems/1.8
- Ruby 実行可能ファイル:/usr/bin/ruby1.8
- 実行可能ディレクトリ:/var/lib/gems/1.8/bin
- Rubygems プラットフォーム:
- ルビー
- x86-linux
- 宝石のパス:
- /var/lib/gems/1.8
- /home/sros/.gem/ruby/1.8
- 宝石の構成:
- :update_sources => true
- :verbose => true
- :ベンチマーク => false
- :バックトレース => false
- :bulk_threshold => 1000
リモートソース:
%> 宝石リスト
ActionMailer(2.3.5)ActionPack(2.3.5)ActiveModel(3.0.3)ActivereCord(2.3.5)Activeresource(2.3.5)Activesupport(3.0.3、2.3.5)Acts_as_audited(1.1.1)Arel(2.0。 4)authlogic(2.1.6)ビルダー(2.1.2)cancan(1.4.1)daemon_controller(0.2.5)fastthread(1.0.7)ファイルテール(1.0.5)i18n(0.4.2)乗客(3.0。 0)ラック(1.0.1)レール(2.3.5)レイク(0.8.7)spruz(0.2.2)tzinfo(0.3.23)
%> どの宝石
/usr/bin/gem
%> どのルビー
/usr/bin/ルビー
** /etc/apache2/mods-enabled/passenger.conf **
assengerroot /var/lib/gems/1.8/gems/passenger-3.0.0 passengerruby/usr/bin/ruby
** /etc/apache2/mods-enabled/passenger.load **
LoadModule 乗客モジュール /var/lib/gems/1.8/gems/passenger-3.0.0/ext/apache2/mod_passenger.so
他に見たいものがあればお知らせください。すべてをsudoでインストールしました。すべてのrubygemsディレクトリ、rubyディレクトリ、アプリケーションディレクトリはchmod 755なので、www-dataは正しくアクセスできるはずです。GEM_HOME を両方の Rubygems パスに設定し、Rails gem もそこにあることを確認してみました。
助けてください、これは私を死に至らしめるのです!
アップデート:
テストサーバーの gem リスト (正常に動作します)
abstract (1.0.0)
actionmailer (3.0.0, 2.3.8, 2.3.5)
actionpack (3.0.0, 2.3.8, 2.3.5)
activemodel (3.0.0)
activerecord (3.0.0, 2.3.8, 2.3.5)
activeresource (3.0.0, 2.3.8, 2.3.5)
activesupport (3.0.0, 2.3.8, 2.3.5)
acts_as_audited (1.1.1)
arel (1.0.1)
authlogic (2.1.6)
builder (2.1.2)
bundler (1.0.0)
cancan (1.3.4)
cgi_multipart_eof_fix (2.5.0)
daemon_controller (0.2.5)
daemons (1.1.0)
dbi (0.4.5)
deprecated (2.0.1)
erubis (2.6.6)
fastthread (1.0.7)
file-tail (1.0.5)
gem_plugin (0.2.3)
mail (2.2.5)
mime-types (1.16)
mongrel (1.1.5)
mongrel_cluster (1.0.5)
mysql (2.8.1)
passenger (3.0.0)
polyglot (0.3.1)
rack (1.2.1, 1.1.0, 1.0.1)
rack-mount (0.6.13)
rack-test (0.5.4)
rails (2.3.5)
railties (3.0.0)
rake (0.8.7)
spruz (0.2.2)
thor (0.14.0)
treetop (1.4.8)
tzinfo (0.3.23)
validates_date_time (1.0.0)
解決
この問題をもう一度調べてもらうために同僚を誘ったところ、次のことがわかりました。 役職 元の投稿に記載されている誤解を招く役に立たないエラーを実際のエラー テキストに変換します。問題の根本は、特定の gem のどのバージョンがインストールされているか、またどこにインストールされているかに起因することになりました。AFIAK 結局、ラックのバージョン 1.0.0 とバージョン 1.0.1 が必要になりました。
したがって、この問題から学んだことを他の人に伝えます。「Rails X.X.X gem が見つかりません...」というメッセージが表示された場合は、boot.rb ファイルを確認し、上記のリンクで説明されている変更を行ってください。これにより、実際の問題が表示されます。これは、常に他の gem のバージョンが間違っているため、rails gem のロード プロセスが失敗するようです。
私の元の投稿を見て時間を割いてくださった皆さん、ありがとうございました!
他のヒント
Ruby の Apache をチェックしてもらえますか?探す
乗客ルビー /usr/bin/ruby
乗客が間違ったルビを見ている可能性があります (2 つのディレクトリに複数インストールされている可能性があります)