Ошибка 502 Bad Gateway при использовании Nginx/Passenger в Mac OS X (10.6.1)

После нескольких часов борьбы с этой аномалией я наконец признал поражение. Если кто-нибудь здесь может помочь мне, я был бы очень благодарен!


КРАТКОЕ РЕЗЮМЕ:

У меня есть эта ошибка в моем журнале ошибок 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

и настроил Nginx в /usr/local/nginx/conf/nginx.conf

Для полноты вот содержимое 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 в мою переменную пути. Все идет нормально. Если я запускаю Nginx из терминала, используя sudo nginx, у меня не возникает никаких проблем, я могу просмотреть мое тестовое приложение Rails по адресу http (двоеточие) // test.local, как и ожидалось.

Проблема возникает, когда я пытаюсь настроить систему для загрузки Nginx при запуске. Я следовал инструкциям вики Nginx (с некоторыми изменениями для разных путей)

Я создал файл 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"

Если я остановлюсь вручную, а затем запущу Nginx из терминала, используя sudo, он начнет работать. Честно говоря, это поставило меня в тупик, возможно, это что-то действительно простое, но я просто не вижу этого сейчас. Любые мысли или предложения будут с благодарностью приняты. Спасибо, что нашли время, чтобы прочитать это!

Ян

1 ответ

Решение

Вам нужно установить "демон выключен". launchctl предполагает, что процессы, которые он порождает, не демонизируются, иначе он не может знать, когда перезапустить процесс. http://almosteffortless.com/2009/09/16/passenger-with-nginx-on-mac-os-x/

Другие вопросы по тегам