unix:///var/run/supervisor.sock такого файла нет

Я использую http://supervisord.org/ на своем сервере Ubuntu 14.04, и все работает нормально. Я развертываю, используя git push, и при развертывании мне также нужно перезапустить сервер приложений ( gunicorn), который я могу сделать, используя supervisorctl,

о мой supervisord.confGunicorn определяется следующим образом:

[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

следуйте приведенным ниже инструкциям, чтобы решить проблему -

  1. Удалить.sock файл из /tmp
  2. Запустите команду 'supervisord'. Это восстановит файл носка.
  3. Запустите 'supervisorctl -i', чтобы проверить состояние служб.

Надеюсь, это поможет вам!

После слишком большой борьбы с этим вопросом, когда все говорили мне, чтобы просто enable или restart который не работал. Я наконец нашел решение для меня:

  • Прежде всего, подтвердите, что у вас есть основной файл supervisor.conf здесь: /etc/supervisor/supervisor.conf
  • Если вы в моем случае, у вас также есть конкретный проект .conf файл здесь: /etc/supervisor/conf.d/project.conf

как-то supervisorctl работал нормально, но странно то, что делать service supervisor restart ломает все и вы получаете ошибку ОП.

Решение тогда состоит в том, чтобы:

  1. Rename project.conf в project.conf.tmp
  2. затем service supervisor restart (после чего supervisorctl снова работает)
  3. Вы переименовываете свой файл conf проекта в project.conf
  4. 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, и все, кажется, работает нормально.

Другие вопросы по тегам