Я развертываю веб-сайт с использованием Django и Django-Channels, при этом сервер Channel daphne
ASGI заменяет типичную настройку Gunicorn WSGI. Используя это руководство по Gunicorn WSGI в качестве начального руководства. Я попытался написать службу systemctl для своего сервера daphne, когда столкнулся с приведенной ниже ошибкой:
CRITICAL Listen failure: [Errno 13] Permission denied: '27646' -> b'/run/daphne.sock.lock'
К сожалению, мне не удалось найти ответы на вопрос, почему доступ к файлу .sock
будет запрещен (в контексте Дафны), поэтому я надеялся получить подсказки о том, с чего начать отладку этой проблемы. Ниже мои файлы daphne.socket
и daphne.service
.
daphne.service
[Unit]
Description=daphne daemon
Requires=daphne.socket
After=network.target
[Service]
User=brianl
Group=www-data
WorkingDirectory=/home/brianl/autoXMD
ExecStart=/home/brianl/autoXMD/env/bin/daphne -u /run/daphne.sock -b 0.0.0.0 -p 8000 autoXMD.asgi:application
[Install]
WantedBy=multi-user.target
daphne.socket
[Unit]
Description=daphne socket
[Socket]
ListenStream=/run/daphne.sock
[Install]
WantedBy=sockets.target
Основываясь на связанном учебнике DigitalOcean, я начинаю свой сервис с sudo systemctl start daphne.socket
.
Я предполагаю, что есть какое-то несоответствие между настройкой служб systemctl для Gunicorn и Daphne, которое я пропустил, но я точно не знаю.
(Если это поможет, я планирую использовать Nginx в качестве основного сервера, но я еще не дошел до этого)
РЕДАКТИРОВАТЬ:
Было бы полезно, если бы я также приложил полный вывод, который дает systemd:
● daphne.service - daphne daemon
Loaded: loaded (/etc/systemd/system/daphne.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since Thu 2019-09-05 22:00:43 UTC; 1min 51s ago
Process: 22041 ExecStart=/home/brianl/autoXMD/env/bin/daphne -u /run/daphne.sock -b 0.0.0.0 -p 8000 autoXMD.asgi:application (code=exited, status=0/SUCCESS)
Main PID: 22041 (code=exited, status=0/SUCCESS)
Sep 05 22:00:43 autoxmd daphne[22041]: warnings.warn('%s. joblib will operate in serial mode' % (e,))
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,013 INFO Starting server at tcp:port=8000:interface=0.0.0.0, unix:/run/daphne.sock
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,017 INFO HTTP/2 support not enabled (install the http2 and tls Twisted extras)
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,020 INFO Configuring endpoint tcp:port=8000:interface=0.0.0.0
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,022 INFO Listening on TCP address 0.0.0.0:8000
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,022 INFO Configuring endpoint unix:/run/daphne.sock
Sep 05 22:00:43 autoxmd daphne[22041]: 2019-09-05 22:00:43,022 CRITICAL Listen failure: [Errno 13] Permission denied: '22041' -> b'/run/daphne.sock.lock'
Sep 05 22:00:43 autoxmd systemd[1]: daphne.service: Start request repeated too quickly.
Sep 05 22:00:43 autoxmd systemd[1]: daphne.service: Failed with result 'start-limit-hit'.
Sep 05 22:00:43 autoxmd systemd[1]: Failed to start daphne daemon.
/run
для пользователяbrianl
? - person Toan Quoc Ho   schedule 03.09.2019brianl
нет разрешения писать на.sock
. вы можете использоватьsudo chmod 775 .sock
- person mehdi   schedule 03.09.2019sudo chmod 775 /run
(иsudo chmod 775 /run/*
), но ничего не получилось. Любые дополнительные предложения? - person Brian Lee   schedule 06.09.2019daphne -u /run/daphne.sock -b 0.0.0.0 -p 8000
не эквивалентенgunicorn -bind ....
, параметр для daphne-u
попытается создать unix-сокет, а затем привязаться к нему. Решение состоит в том, чтобы просто опустить часть с созданием сокета самостоятельно. поэтому просто удалитеRequires=daphne.socket
из службы. - person Take_Care_   schedule 06.09.2019-u /run/daphne.sock
из командыdaphne
? - person Brian Lee   schedule 06.09.2019Requires=daphne.socket
изdaphne.service
, но не смог проверить соединение сcurl --unix-socket /run/gunicorn.sock localhost
. (Дано в учебнике DigitalOcean) Попыткаcurl 0.0.0.0:8000
вместо этого приводит к той же ошибке. Любые дополнительные советы? - person Brian Lee   schedule 07.09.2019-u /run/daphne.sock
наконец заставилоcurl
работать. Как мне заставить его работать, используя подход сокетов? (для тех, кто столкнется с этой проблемой в будущем) - person Brian Lee   schedule 07.09.2019daphne -u /run/daphne.sock project.asgi:application
, поскольку вы получаете сообщение об ошибке только при запуске этой команды. - person theEpsilon   schedule 08.08.2020