サーバーの1つにあるROR 4.2アプリのAppNetaからトレースコンポーネントを追加するために、ソースからUbuntu 14.04にnginx 1.6.3とパッセンジャー5.0.15の新規インストールを実行しました。 Nginxとパッセンジャーが実行され、ページを提供しています。サーバー監視のトレースデータを取得しています。すべてが順調に見えます、
しかし、「passenger-status」を(rootとして)実行すると、次のようになります。
エラー:Phusion Passengerが実行されていないようです。実行されていることが確かな場合、この問題の原因は次のとおりです。
- ApacheのPassengerInstanceRegistryDirオプション、Nginxのpassenger_instance_registry_dirオプション、またはPhusion Passenger Standaloneの--instance-registry-dirコマンドライン引数を使用して、インスタンスレジストリディレクトリをカスタマイズしました。その場合は、環境変数PASSENGER_INSTANCE_REGISTRY_DIRをそのディレクトリに設定し、再度passenger-statusを実行してください。
- インスタンスディレクトリは、オペレーティングシステムのバックグラウンドサービスによって削除されました。 ApacheのPassengerInstanceRegistryDirオプション、Nginxのpassenger_instance_registry_dirオプション、またはPhusion Passenger Standaloneの--instance-registry-dirコマンドライン引数を使用して、別のインスタンスレジストリディレクトリを設定してください。
これの問題は、カピストラーノの展開をブロックしているように見えることです。この同じエラーは、終了する前にキャップで表示されます。
乗客isが実行中です(ps
出力にあり、ページが提供されています)。現在実行中のインスタンスの場所をパッセンジャーステータスに通知するだけです。 (これは 設計とアーキテクチャ のドキュメントに記載されています。)したがって、このインスタンスのレジストリディレクトリの値を設定することは必要なステップのようです。しかし、どのような価値がありますか?
Nginxリファレンス によると、デフォルトは/tmp
および/var/run/passenger-instreg
です。/tmpにインスタンスディレクトリが見つかりました。したがって、PASSENGER_INSTANCE_REGISTRY_DIRをいくつかの異なる値に設定してみました。
/ run/passengerにディレクトリを作成し、nginx構成ファイルにその値を設定して、nginxを再起動することも試みました。一時ディレクトリが作成されていますが、passenger-statusでも同じメッセージが表示されます。 /opt/passenger-5.0.15/bin/passenger-statusスクリプトを使用して、そのスクリプトの最新バージョンを使用していることを確認しても、.
乗客用の元の「location.ini」ディレクトリにはいくつかの設定値がありますが、インスタンスレジストリディレクトリではなかったため、再利用するものはありませんでした。
興味深いことに、/ opt/passenger-5.0.15/lib/phusion_passenger/nginx/config_options.rbファイルには、passenger_instance_registory_dirのエントリがありません。他のnginx設定オプションがありますが、これもあると思いました。
Nginx passenger_instance_registry_dir
オプションだけでなく、環境変数も設定しようとしましたが、passenger-status
コマンドを現在実行中のインスタンスに接続できないようなので、理解できないことがあります。
どんな助けでも大歓迎です。
旅客著者はこちら。
/tmp/passenger.JxmCeiA
はインスタンスディレクトリの例です。これは実際に起動ごとに変化します(インスタンスに固有であるため)。
親ディレクトリ(インスタンスディレクトリが配置されているディレクトリ)は、インスタンスregistryディレクトリです。したがって、あなたの場合、使用されているインスタンスレジストリディレクトリは/ tmpです。
乗客のインストールバージョンに何らかの不一致があると思います。インスタンスディレクトリの構造を過去数回変更しました。これを行うたびに、内部バージョン番号を上げて、以前のPassengerバージョンと互換性がないことを示しています。以下を再確認できますか?
passenger_root
は何に設定されていますか? Nginx内でコンパイルされたPassengerバージョンと一致しますか?passenger-status
への完全パスはどこにありますか? passenger_root
と一致しますか?また、Phusion Passenger APTリポジトリとソースtarballインストールを混在させているようです。複数のインストールを配置することは、一般的に悪い考えです。他のインストールをクリーンアップして、1つだけになるようにしてください。
また、PASSENGER_INSTANCE_REGISTRY_DIR
環境変数を正しく設定しているかどうかも確認してください。 Sudoは環境変数を核にするので、次のようにパッセンジャーステータスを実行する必要があります。
# Correct:
Sudo env PASSENGER_INSTANCE_REGISTRY_DIR=/tmp passenger-status
# Incorrect, Sudo nukes environment variables
export PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
Sudo passenger-status
Lib/phusion_passenger/nginx/config_options.rbについて:このファイルには、主にサーバーごとおよびロケーションごとの構成オプションがリストされています。メインコンテキストの多くの設定オプションは、config_options.rb
システムにまだ移植されていないか、カスタムの注意が必要なため不可能です。現在、passenger_instance_registry_dir
はext/common/nginx/Configuration.cに実装されています。コードベースのクリーンアップとリファクタリングを続けると、このオプションは最終的にconfig_options.rb
に移動する可能性があります。
Systemdサービスを使用してPassengerを起動するときに他の誰かがこの問題を抱えている場合、systemdのプライベート/tmp
が原因である可能性があります。この問題は、サービスファイルにPrivateTmp=false
を追加することで解決しました。
ステップ1のチェックphusion乗客が正しくインストールされている
Sudo passenger-config validate-install
「「すべてが良いようです:-)」という出力が表示された場合は問題ありません。phusionの乗客を再インストールする必要がない場合は、https:/を参照してください。 /www.phusionpassenger.com/library/walkthroughs/start/
ステップ2は、phusionの乗客の記憶状態を確認します
Sudo passenger-memory-stats
「実行中のプロセスがある場合は問題ありません。そうでない場合は、パッセンジャーアプリを起動するか、nginxまたはApacheを追加のライブラリとともにインストールする必要があります。nginxの場合は、nginxとnginx-extrasが必要です。」.
ステップ3 nginx.confファイル(ubuntuの場合、通常は/etc/nginx/nginx.conf)またはApache.confファイルのpassenger_rootのコメントを外します
nginxまたはApacheを再起動します
Sudo service nginx restart # (or systemctl restart nginx, for new version of linux such as ubuntu 15.04, CentOS7)
今、あなたは走ることができます
passenger-status
エラーは解消されます。表示される可能性が最も高い出力は、「Phusion Passengerは現在、どのアプリケーションにもサービスを提供していない」ということです。