I use fedora 17, and when I setup nginx with uwsgi using unix domain socket, when I place the socket in a directory with proper permission it's ok, but when I place the socket in the /tmp it will cause nginx error:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

The file does exist and has read/write permission for nginx user. But what cause this error, its really drive me crazy, can somebody figure it out.

up vote 29 down vote accepted

You can't place sockets intended for interprocess communication in /tmp.

For security reasons, recent versions of Fedora use namespaced temporary directories, meaning every service sees a completely different /tmp and can only see its own files in that directory.

To resolve the issue, place the socket in a different directory, such as /run (formerly known as /var/run).

YES! THIS HELPED!

Was seeing check-startup-logs messages from uwsgi, but had no data in the startup logs, wasn't able to find out what was happening. Turned out, I needed to change the sock file to a non-/tmp location, and add:

catch-exceptions = true

to the wsgi's ini file. turned out, I'd specified logging filehandler location to a non-existent directory, so it couldn't log the errors in the first place.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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