Иногда Supervisor может показывать нижеприведенную ужасную ошибку при перезапуске службы (командой sudo service supervisor restart):
unix:///var/run/supervisor.sock refused connection
Попробуйте диагностировать проблему с помощью команды supervisord
. Вы также можете запустить journalctl -xe
.
Проблемы и решения:
Когда вы пишете новый файл .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
).
Надеюсь, это объяснение поможет кому-то в будущем.