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 -
- Delete .sock file from /tmp
- Run 'supervisord' command. This will recreate the sock file.
- Run 'supervisorctl -i' to check the status of the services.
Hope this helps you!