Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

After several hours of battling with this anomaly, I've finally admitted defeat. If anyone here can help me I would be most grateful!


QUICK SUMMARY:

I have this error in my Nginx 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"

The full details are below.


I've installed Nginx and Passenger on my local machine with a view to using it for local development. I was running Apache and Passenger but I was getting a few bugs so I decided to switch.

I installed the Passenger Nginx extension without any trouble into /usr/local/nginx

and configured Nginx in /usr/local/nginx/conf/nginx.conf

For completeness here is the contents of 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;
     }
}

I then added /usr/local/nginx/sbin to my path variable. So far so good. If I start up Nginx from the terminal using sudo nginx I get no trouble whatsoever, I can view my test Rails app at http(colon)//test.local as expected.

The problem arrises when I try and configure the system to load Nginx on startup. I have followed the instructions from the Nginx wiki (with some adjustments for differing paths)

I have created a plist file in: /System/Library/LaunchDaemons/nginx.plist

It's contents look like this:

<?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>

I then run sudo launchctl load -F /System/Library/LaunchDaemons/nginx.plist

If I reboot the system and go to http://test.local in the browser I see a page that says:

502 Bad Gateway nginx/0.7.61

If I look in the Nginx error log (which is at /usr/local/nginx/logs/error.log)

I see the following error recorded:

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"

If I manually stop and then start Nginx from the terminal using sudo it begins to work. To be honest this one has me stumped, it's probably something really simple but I just can't see it at the moment. Any thoughts or suggestions would be gratefully received. Thanks for taking the time to read this!

Ian

share|improve this question
1  
Just as a quick update to this problem. I have discovered that this issue only manifests in server configurations that invoke passenger. Static Nginx configurations seem to load fine. Therefore I think this is some sort of Passenger permissions issue... –  i0n Nov 9 '09 at 5:19
add comment

1 Answer

up vote 3 down vote accepted

You need to set 'daemon off'. launchctl assumes that processes it spawns don't daemonize, otherwise it cannot know when to restart a process. http://almosteffortless.com/2009/09/16/passenger-with-nginx-on-mac-os-x/

share|improve this answer
    
This did the trick! Thanks so much! –  i0n Nov 9 '09 at 22:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.