web-dev-qa-db-ja.com

Passenger + nginx:アプリケーションは本番モードで実行されません

Passenger + Nginxを使用してRailsアプリを実行しています。「Rails_envdevelopment;」を使用すると、アプリケーションは正常に動作します。

しかし、本番モードで実行すると、「申し訳ありませんが、問題が発生しました」というメッセージが表示されます。

本番環境でdb:migrateを実行しましたが、データベースに正常にアクセスできます。

奇妙なことに、ログに新しいエントリ(nginxとRails one))がないので、nginxユーザーがそれらに書き込むことができるようにしました。

Railsコンソールプロダクションを実行すると、正常に動作します:

# Rails console production
Loading production environment (Rails 3.2.0)
1.9.3-p125 :001 > 

何が起こっているのかについてのアイデアはありますか?他に何を確認する必要がありますか?

----編集----

@BenLeeがpassenger_debug_log_fileをnginx.confに追加することを提案した後、私は両方でこのエラーが発生し始めました開発と本番

# /etc/init.d/nginx restart
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
Parando o nginx:                                           [  OK  ]
Iniciando o nginx: nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
                                                           [  OK  ]

このエラーについて検索しましたが、まだ解決策が見つかりません。ウォッチドッグは存在しているようで、適切な場所にあります。

# ls -lh /usr/local/rvm/gems/Ruby-1.9.3-p125/gems/passenger-3.0.11/agents/
total 7,8M
drwxr-sr-x 2 root rvm 4,0K Fev 22 23:34 nginx
-rwxr-xr-x 1 root rvm 4,6M Fev 22 23:35 PassengerLoggingAgent
-rwxr-xr-x 1 root rvm 3,3M Fev 22 23:34 PassengerWatchdog

Passenger_debug_log_fileを削除すると、正常に起動します。しかし、元の問題が再発し、アプリケーションは本番モードで実行されません。

5
Fernando

これは、ある種のファイルの破損である可能性があり、エージェントの1つにある可能性があります。役立つ可能性のあることの1つは、エージェントの新しいバージョンを再インストールすることです。これは、パッセンジャースタンドアロンパッケージを介して行うことができます。

これを行うには、最初にサーバーにSSHで接続し、次に任意のディレクトリで(以下の例では、ホームディレクトリを想定しますが、どのディレクトリでもかまいません)、次のコマンドを実行します。

passenger package-runtime

これにより、多くのダウンロード、構成、およびインストールが行われるように見えますが、心配する必要はありません。 passenger-standaloneというサブディレクトリにパッセンジャースタンドアロンバージョンをインストールするだけです。このコマンドを実行すると、次のようなファイル構造が表示されます(ホームディレクトリでコマンドを実行したと仮定)。

+ /home/you
    + passenger-standalone
        + 3.0.11-....
            nginx-x.y.z.tar.gz
            support.tar.gz

したがって、これは2つのtar.gzファイルを含む単なるツリーです(3.0.11-...はリテラルではありませんが、その文字列で始まります。フルネームはシステムに依存します。同様に、次のいずれかのx.y.z tar.gzファイルは実際にはバージョン番号になります)。次に、support.tar.gzのtarを解除し、次のようにします。

cd passenger-standalone/3.0.11-....
tar xzvvf support.tar.gz

これにより、現在のディレクトリに抽出されます。特に、2つの新しいファイルを含むagentsサブディレクトリが作成されます。

+ /home/you
    + passenger-standalone
        + 3.0.11-....
            + agents
                PassengerLoggingAgent
                PassengerWatchdog

アイデアは、これらのエージェントファイルを元のシステムファイルにコピーして、システムバージョンに存在する可能性のある破損を修正することです。ただし、最初に、権限を適切に設定します。上記のコマンドが中断したところから、次のコマンドを実行します。

cd agents
Sudo chown root:rvm Passenger*

次に、元のエージェントをバックアップします。

cd /usr/local/rvm/gems/Ruby-1.9.3-p125/gems/passenger-3.0.11/agents
Sudo cp PassengerLoggingAgent PassengerLoggingAgent.backup
Sudo cp PassengerWatchdog PassengerWatchdog.backup

最後に、スタンドアロンパッケージから新しいバージョンをここに移動します。

Sudo mv /home/you/passenger-standalone/3.0.11-..../agents/Passenger* .

次に、nginxを再起動します。何らかの理由でこれを元に戻す必要がある場合は、バックアップコピーを復元して、nginxを再起動してください。

オプションのクリーンアップ手順として、これらのスタンドアロンファイルはもう必要ないため、次のように削除できます。

rm -rf /home/you/passenger-standalone
1
Ben Lee

フェルナンドはエージェントを更新することで問題を解決したようですが、私は同様の問題を抱えていましたが、別の解決策がありました。

乗客とnginxを使用しているときにRailsアプリでこの動作もありました。設定すると、すべて正常に機能しました Rails_env開発; nginx.conf内。ただし、開発を本番環境に変更すると機能しなくなり、ブラウザから接続しようとしたときに接続が拒否されました。とにかく、問題はproduction.rbファイルと行にありました

config.force_ssl = true

私がそれをコメントアウトしたとき、アプリケーションは本番環境で機能しました。そして、RailsアプリでSSLを構成する代わりに、nginx.confで構成しました。

これが他の誰かが乗客とnginxでRailsアプリをセットアップするのに役立つかもしれないことを願っています。

2
davidklsn