2012-04-02 13 views
4

私のアプリケーションで実行中の500エラーを診断するのは本当に苦労しています。私はそれ以前に働いていましたが、Capastranoを介して再展開した後、私はそれを得ることができません。500エラー(Rails、Passenger、Nginx、Postgres)を適切に診断するには

  1. サーバーはnginxの+乗客とのセットアップで、私は のPostgreSQLを使用しています:ここで

    は事実です。

  2. スタティックアセットは正常に動作しているため、ブラウザで正常にアクセスできます。
  3. RAILS_ENV=production bundle exec rails consoleを介してレールコンソールにアクセスし、アクティブレコードアクション( のデータをdbから取得するなど)を実行できます。
  4. コンソール内でapp.get("/")を実行すると、50035エラーも返されます( のモデルをロードするために実行されたクエリを最初に表示した後)。
  5. production.logファイルに書き込まれることはありません。私はそれの地獄のためだけにそれにパーミッション777を設定しました。また、ログレベルを に設定しました。何も表示せずにデバッグします。
  6. nginxログ(乗客も使用する)はエラーの兆候を示さず、単にキャッシュミスについて通知します。

何も使用されていないので、私はここで何をすべきか分かりません。私は、ヘルプなしでアプリケーションディレクトリ全体の完全なアクセス許可を設定しようとしました。サーバーを何度も何度も再起動しました。データベースはそこにあり、レールはそれと明確に通信できます。私は最初にそれを実行するために何をしたのか分かりません。なぜレールが出力されないのか分かりません何かログに。

答えて

7

これはわかりました。アプリは開発モードで正常に動作していたので、プロダクション固有のものがそれを台無しにしていたことは分かっていました。私は、設定/環境/ production.rbに入り、これらの設定を変更します。

# Full error reports are disabled and caching is turned on 
config.consider_all_requests_local  = false # changed from true 
config.action_controller.perform_caching = true # changed from false 

そして乗客を再起動した後、レールは、スタックトレース/ wの私にエラーを示しました。私は資産パイプラインをプリコンパイルするのを忘れていたことがわかります!

0

開発モードで実行してエラーが報告されているかどうか確認しましたか?

1をチェックする

+0

私はこれを試して、まずtmpディレクトリへの書き込みアクセスについて不平を言いましたが、それを修正してから、うまくいったのです。同じデータベースを使って設定しました。つまり、生産モードでは失敗します。 – Brian

3

物事は)あなたは本番環境で実行していますか? development.logファイルにエントリがあるかどうかを確認してください。

2)完全なスタックトレースで500エラーが発生したときに電子メールで送信するようにアプリを設定します。私はException Notifierの宝石を使用しますが、これには他にもたくさんのソリューションがあります。

3)コンソールでアプリケーションをチェックするときに、実動モードでコンソールを起動していることを確認していますか?アプリがまったく起動していない可能性があり、プロダクションパラメータを設定することを忘れたため、アプリケーションが正しく動作していないと思っている可能性があります。

4)nginx 500エラーまたはRails 500エラーが表示されますか? nginxの場合は、あなたのアプリがまったく起動していない可能性が高く、ログファイルにレールエラーが発生する可能性は非常に低いです。資産は静的なファイルであり、それらにナビゲートすることは、あなたの存在以外に何も証明しません。

5)サーバーの正しいフォルダを確認してもよろしいですか?本当に愚かだがcapistranoは、ninxがあなたのアプリのために探しているフォルダとは異なるフォルダにアプリケーションを展開している可能性があるので、capistranoフォルダとnginxが探しているフォルダの両方を確認してください。

単なる提案ですが、私は乗客ではなくユニコーンを使用します。それはnginxと素晴らしいです。

+0

すべての提案をありがとう!私はそれが生産モードで実行されていることを肯定的です(私はこれをnginx設定の乗客オプションとして指定しました)。 nginxエラーログは500エラーの表示を示さなかったので、私はRailsで500エラーが発生していたと確信しています。そして、はい、私はダブルnginxが見ていたフォルダを確認しました。 – Brian

1

私の問題は乗客のログファイル(error.log)に何もありません。それは回転ログの問題です。実行

passenger-config reopen-logs 

私の問題を解決しました。 More

関連する問題