unix:///var/run/supervisor.sock такого файла нет
Я использую http://supervisord.org/ на своем сервере Ubuntu 14.04, и все работает нормально. Я развертываю, используя git push, и при развертывании мне также нужно перезапустить сервер приложений ( gunicorn), который я могу сделать, используя supervisorctl
,
о мой supervisord.conf
Gunicorn определяется следующим образом:
[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
и я включил supervisorctl
как это:
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
Я начал супервизор с помощью
sudo supervisord -c /home/imb/imb/supervisord.conf
Насколько я понимаю, теперь я могу перезапустить Gunicorn с помощью команды supervisorctl restart gunicorn
, но когда я делаю это, я получаю
$ supervisorctl restart gunicorn
unix:///var/run/supervisor.sock no such file
Я проверил и файл /var/run/supervisor.sock
на самом деле не существует, хотя я уверен, что супервизор на самом деле работает:
$ ps -A | grep supervisor
27211 ? 00:00:00 supervisord
Кто-нибудь знает, почему /var/run/supervisor.sock
файл не создан, хотя супервизор явно работает? Все советы приветствуются!
8 ответов
Хорошо, после возни еще немного я обнаружил, что я сделал не так.
Оказывается линии для supervisorctl
ниже только скажи supervisorctl
где он может найти файл сокета.
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
Далее в файле есть две другие строки, которые определяют, где файл фактически создается:
[unix_http_server]
file=/tmp/supervisor.sock
Как видите, созданный файл сокета в /tmp/
в то время как supervisorctl
пытался прочитать это из /var/run/
, Я изменил последнюю строку на file=/var/run/supervisor.sock
и теперь это работает красиво.
Я надеюсь, что этот ответ может помочь кому-то еще иметь дело с той же проблемой.
Кроме того, вы можете проверить ссылку, предоставленную @MariusMatutiae в комментариях: https://stackoverflow.com/questions/10716159/nginx-and-supervisor-setup-in-ubuntu
Для пользователей, имеющих одинаковую запись для обоих
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
&
[unix_http_server]
file=/tmp/supervisor.sock
следуйте приведенным ниже инструкциям, чтобы решить проблему -
- Удалить.sock файл из /tmp
- Запустите команду 'supervisord'. Это восстановит файл носка.
- Запустите 'supervisorctl -i', чтобы проверить состояние служб.
Надеюсь, это поможет вам!
После слишком большой борьбы с этим вопросом, когда все говорили мне, чтобы просто enable
или restart
который не работал. Я наконец нашел решение для меня:
- Прежде всего, подтвердите, что у вас есть основной файл supervisor.conf здесь:
/etc/supervisor/supervisor.conf
- Если вы в моем случае, у вас также есть конкретный проект
.conf
файл здесь:/etc/supervisor/conf.d/project.conf
как-то supervisorctl
работал нормально, но странно то, что делать service supervisor restart
ломает все и вы получаете ошибку ОП.
Решение тогда состоит в том, чтобы:
- Rename
project.conf
вproject.conf.tmp
- затем
service supervisor restart
(после чегоsupervisorctl
снова работает) - Вы переименовываете свой файл conf проекта в
project.conf
supervisorctl reread
,supervisorctl update
,supervisorctl restart all
Эта проблема возникла из-за того, что в одном из файлов конфигурации одной из моих программ отсутствовал каталог. Как только я создал каталог, Supervisorctl запустился нормально.
Vi /opt/conf/supervisord.conf
[supervisord]
nodaemon=true
[unix_http_server]
file=/var/run/supervisor.sock
; rpc interface for supervisorctl
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[program:program1]
руководить работой
/usr/bin/supervisord -c /opt/conf/supervisord.conf
запустить supervisorctl
/usr/bin/supervisorctl -c /opt/conf/supervisord.conf
Для меня проблема заключалась в отсутствии упоминания файла журнала в
supervisor.conf
файл
Исправить:
touch /var/log/supervisor/supervisord.log
У меня была проблема, что supervisord работал в контейнере докеров. Когда я хотел использовать
supervisorctl
команда единственный ответ был
unix:///var/run/supervisor.sock no such file
.
Решение моей проблемы заключалось в том, что мне пришлось выполнить
supervisorctl
команда как корень.
sudo supervisorctl
Больше не надо
unix:///var/run/supervisor.sock no such file
.
Обновите его до MacOS Sierra 10.12.5.
Я столкнулся с той же проблемой, и все было правильно в файле конфигурации. Позже я понял, что перешел на последнюю версию MacOS Sierra 10.12.3, и тогда это не сработало. Он работал над старой версией, но не над этой конкретной версией MacOS. Затем я обновил его до MacOS Sierra 10.12.5, и все, кажется, работает нормально.