unix:///var/run/supervisor.sock no such file

I'm running Supervisord on my Ubuntu 14.04 server and everything works fine. I deploy using a git push and upon deployment I also need to restart my application server (gunicorn) which I can supposedly do using supervisorctl.

un my supervisord.conf, gunicorn is defined as follows:

[program:gunicorn]
command=/home/imb/imb/venv/bin/gunicorn --worker-class eventlet -b 127.0.0.1:5000 -w 1 app:app
directory=/home/imb/imb
autostart=true
autorestart=true
stdout_logfile=/tmp/gunicorn.log
redirect_stderr=true
stopsignal=QUIT

and I enabled supervisorctl like this:

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

I started supervisor using

sudo supervisord -c /home/imb/imb/supervisord.conf

As far as I understand I now should be able to restart gunicorn using the command supervisorctl restart gunicorn, but when I do that I get

$ supervisorctl restart gunicorn
unix:///var/run/supervisor.sock no such file

I checked and the file /var/run/supervisor.sock indeed doesn't exist, even though I'm sure supervisor is in fact running:

$ ps -A | grep supervisor
27211 ?        00:00:00 supervisord

Does anybody know why the /var/run/supervisor.sock file isn't created, even though supervisor is clearly running? All tips are welcome!


Solution 1:

Alright, after messing around some more I found what I did wrong.

Turns out the lines for supervisorctl below, only tell supervisorctl where it can find the socket file.

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

Further above in the file there are two other lines which define where the file is actually created:

[unix_http_server]
file=/tmp/supervisor.sock

As you can see that created the socket file in /tmp/ while supervisorctl tried to read it from /var/run/. I changed the last line to file=/var/run/supervisor.sock and now it works beatifully.

I hope this answer might help someone else dealing with the same trouble.

Also, you can check out the link provided by @MariusMatutiae in the comments: https://stackoverflow.com/questions/10716159/nginx-and-supervisor-setup-in-ubuntu

Solution 2:

For users who have the same entry for both

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock

&

[unix_http_server]
file=/tmp/supervisor.sock

follow below steps to fix the problem -

  1. Delete .sock file from /tmp
  2. Run 'supervisord' command. This will recreate the sock file.
  3. Run 'supervisorctl -i' to check the status of the services.

Hope this helps you!