unix: ///var/run/supervisor.sock отклонил соединение при перезапуске супервизора - PullRequest
0 голосов
/ 02 апреля 2020

Когда я создал новый .conf файл внутри /etc/supervisor/conf.d/ и попытался запустить эту программу, она показала некоторые ошибки (фатальные ошибки) и часто перезапускалась сама. Затем я запустил команду sudo service supervisor restart, но теперь супервизор также остановился и не мог его перезапустить. Во время решения моей ошибки сервер nginx также застрял.

Потратив немало времени, я нашел его, Алхамдулилла, и написал решение в разделе ответов.

Не доверяйте решению полностью вашей проблеме. Ваша проблема может относиться и к другим проблемам.

1 Ответ

0 голосов
/ 02 апреля 2020

Иногда Supervisor может показывать нижеприведенную ужасную ошибку при перезапуске службы (командой sudo service supervisor restart):

unix:///var/run/supervisor.sock refused connection

Попробуйте диагностировать проблему с помощью команды supervisord. Вы также можете запустить journalctl -xe.

Проблемы и решения:

  1. Когда вы пишете новый файл .conf внутри /etc/supervisor/conf.d каталог, который содержит некоторые операторы, которые генерируют ошибку. Мол, вы пишете несколько операторов, которые будут запускать скрипт. Этот скрипт содержит несколько операторов, которые запускают Gunicorn для развертывания python веб-приложений. В сценарии вы написали инструкцию для связывания сокета unix. Но упомянутый каталог, в котором будет создан сокет unix, не дает разрешения на создание файла .sock. Это может привести к ошибке разрешения.

    Ниже приведена команда demo gunicorn:

SOCKFILE = /home/shamim/python_project/another_directroy/gunicorn.sock
gunicorn ${DJANGO_WSGI_MODULE}:application \
 --name $NAME \
 --bind=unix:$SOCKFILE

Если another_directory не дает разрешения на создание .sock файл внутри него, то может произойти ошибка. Поэтому дайте ему достаточно разрешения, чтобы создать что-то здесь извне. Или связать IP и порт вместо unix сокета (например, 127.0.0.1:ANY_PORT). Сначала убедитесь, что порт не используется другим приложением.

Иногда ошибка может возникать, если в файле .conf используется какой-либо путь к каталогу, но на самом деле этот каталог вообще не существует.

Теперь выполните команду supervisord. Если ошибка не устранена после устранения вышеуказанных проблем и теперь отображается сообщение об ошибке типа - another program is already listening on a port that one of our HTTP servers is configured to use

, выполните следующую команду для устранения этой проблемы:

sudo unlink /var/run/supervisor.sock

Если приведенная выше команда не работает, следует проверить команду unlink the file at /tmp/supervisor.sock

Имейте в виду , что сервер nginx также может отображать некоторые ошибки и не перезагружаться (или начать), если какой-либо файл .conf содержит какое-либо утверждение, где используется сокет, но на самом деле файл сокета не существует или не имеет достаточных разрешений для выполнения.

Пример: если вы пишете код ниже в любом файле конфигурации nginx:

upstream surveyapp_payment_stripe {
    server unix:/home/shamim/python_project/another_directroy/gunicorn.sock fail_timeout=0 weight=5 max_fails=3;
}

Если вышеуказанный сокет не существует или не имеет достаточных разрешений, то может произойти ошибка.

Nginx также может быть показать ошибку, если какой-либо путь к каталогу используется здесь, но не существует вообще. Чтобы быстро запустить nginx в это время, просто удалите файл .conf или отредактируйте его расширение (укажите другой тип расширения, отличный от .conf).

Надеюсь, это объяснение поможет кому-то в будущем.

...