web-dev-qa-db-ja.com

Mac OSX(10.6.1)でNginx / Passengerを使用した502BadGatewayエラー

この異常との数時間の戦いの後、私はついに敗北を認めました。ここの誰かが私を助けることができれば私は最も感謝するでしょう!


簡単な要約:

Nginxエラーログに次のエラーがあります:

2009/11/09 02:49:59 [error] 90#0: *7 connect() to unix:/tmp/passenger.54/master/helper_server.sock
failed (61: Connection refused) while
connecting to upstream, client:
127.0.0.1, server: test.local, request: "GET / HTTP/1.1", upstream:
"passenger://unix:/tmp/passenger.54/master/helper_server.sock:",
Host: "test.local"

詳細は以下のとおりです。


NginxとPassengerをローカルマシンにインストールして、ローカル開発に使用できるようにしました。 ApacheとPassengerを実行していましたが、いくつかのバグが発生していたため、切り替えることにしました。

Passenger Nginx拡張機能を問題なくインストールしました/ usr/local/nginx

/ usr/local/nginx/conf/nginx.confでNginxを構成しました

完全を期すために、ここにnginx.confの内容があります:

worker_processes  2;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    passenger_root /usr/local/lib/Ruby/gems/1.8/gems/passenger-2.2.5;
    passenger_Ruby /usr/local/bin/Ruby;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
     listen 80;
     server_name test.local;
     root /Users/i0n/Sites/test/public;
     passenger_enabled on;
     Rails_env development;
     client_max_body_size 10M;
     client_body_buffer_size 128k;
     }
}

次に、パス変数に/ usr/local/nginx/sbinを追加しました。ここまでは順調ですね。 Sudo nginxを使用してターミナルからNginxを起動すると、何の問題も発生しません。テストを表示できますRails app at http(colon)// test.local予想通り。

起動時にNginxをロードするようにシステムを構成しようとすると、問題が発生します。 Nginx wikiの指示に従いました(パスが異なるように調整しました)

次の場所にplistファイルを作成しました:/ System/Library/LaunchDaemons/nginx.plist

内容は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key><string>nginx</string>
    <key>Program</key><string>/usr/local/nginx/sbin/nginx</string>
    <key>KeepAlive</key><true/>
    <key>NetworkState</key><true/>
    <key>StandardErrorPath</key><string>/usr/local/nginx/logs/error.log</string>
    <key>LaunchOnlyOnce</key><true/>
  </dict>
</plist>

次に、実行しますSudo launchctl load -F /System/Library/LaunchDaemons/nginx.plist

システムを再起動してブラウザでhttp://test.localに移動すると、次のようなページが表示されます。

502 Bad Gateway nginx/0.7.61

Nginxエラーログ(/usr/local/nginx/logs/error.logにあります)を見ると

次のエラーが記録されています。

2009/11/09 02:49:59 [error] 90#0: *7 connect() to unix:/tmp/passenger.54/master/helper_server.sock
failed (61: Connection refused) while
connecting to upstream, client:
127.0.0.1, server: test.local, request: "GET / HTTP/1.1", upstream:
"passenger://unix:/tmp/passenger.54/master/helper_server.sock:",
Host: "test.local"

手動で停止してから、Sudoを使用してターミナルからNginxを起動すると、動作を開始します。正直なところ、これは私を困惑させました、それはおそらく本当に単純なものですが、私は今それを見ることができません。どんな考えや提案もありがたく受け取られます。これを読んでくれてありがとう!

イアン

1
i0n

'デーモンをオフに設定する必要があります。 launchctlは、生成するプロセスがデーモン化しないことを前提としています。そうでない場合、プロセスをいつ再起動するかを知ることができません。 http://almosteffortless.com/2009/09/16/passenger-with-nginx-on-mac-os-x/

4
Hongli Lai