Amazon ec2 のインスタンスで Rails アプリを実行しています。ロードバランサー経由で提供されています。
アプリを初めてデプロイしたときは正常に機能していました。今日、もう一度「cap deploy」を実行しました。それ以来、504 Gateway Timeout エラーが発生しています。
インスタンスに ssh できます。私のデプロイがインスタンスのコードを置き換えていることを確認しました。また、インスタンスに ssh し、telnet を使用して localhost:80 に接続しました。動作しますが、「GET / HTTP/1.1」と入力すると 200 エラーが返されます
本番ログにアクセスすることから始めようとしました。しかし、何らかの理由で本番ログ ファイルが存在しません。本番環境で config.log_level を確認し、:debug に設定しましたが、役に立ちませんでした。
また、ロード バランサーを経由する代わりに、インスタンスの IP アドレスに直接アクセスしようとしましたが、それでも同じエラーが発生しました。これはおそらく、ロード バランサーに問題がないことを意味します。
ここで関連する質問を見ました -ゴムを使用して ec2 にデプロイした後、504 ゲートウェイのタイムアウトを取得し続ける
しかし、私は答えを理解することができず、それがどれほど時代遅れなのかわかりません。誰かが別の解決策を詳しく説明したり、提供したり、これのトラブルシューティングを開始する方法についてのヒントを提供したりできれば、私は感謝しています!
更新: いくつかのデバッグを行い、/var/log/apache2 のログを調べたところ、いくつかのエラーを修正するのに役立ちました。504 Gateway Timeout が表示されなくなりました。代わりに、次のエラーが表示されます。
[ pid=32526 thr=140043323348800 file=ext/apache2/Hooks.cpp:862 time=2012-11-01 02:43:06.843 ]: Unexpected error in mod_passenger: Cannot spawn application '/mnt/tpot-production/releases/20121031194109': An error occured while spawning the application.
Backtrace:
in 'virtual Passenger::SessionPtr Passenger::ApplicationPool::Client::get(const Passenger::PoolOptions&)' (Client.h:742)
in 'Passenger::SessionPtr Hooks::getSession(const Passenger::PoolOptions&)' (Hooks.cpp:294)
in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:563)
[Thu Nov 01 02:47:41 2012] [notice] caught SIGTERM, shutting down