Я работаю с Ubuntu Server 16.04.
Вот .service
файл:
[Unit]
Description=NoDescpt
[Service]
ExecStart=/home/git/cmd/daphnei
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target
И связанный сценарий /home/git/cmd/daphnei
:
#!/bin/bash
cd /home/git/hsfzmun/server
/home/git/virtualenvs/hsfzmun/bin/daphne -b 0.0.0.0 -p 8001 -v2 config.asgi:channel_layer
Что меня смутило, так это то, что служба перезапускается каждые 90 секунд, но я не могу понять почему.
Я обнаружил, что статус службы всегда activating
, что значит systemd
не знает, что служба запущена. Однако сценарий сделал начать, потому что я могу посетить свой веб-сайт. Так что в этом плохого?
Поскольку не было заявлено, что он будет готов в течение 90 секунд (время ожидания запуска по умолчанию), systemd решил, что ваша служба не работает. Неудачные службы убивают все.
Из-за Restart=always
, ваша отказавшая служба перезапускается, и цикл повторяется.
Также, Restart=on-failure
может быть лучше в этом случае.
Ты используешь
Type=Notify
в вашем модульном файле. Это означает, что приложение должно уведомить systemd, когда оно готово к серверу, через sd-уведомление Systemd, вероятно, не получает уведомления от вашего приложения и перезапускает его.
Если ваше приложение не отправляет уведомление в systemd, вам следует обновить соответствующую строку до
Type=simple
Другой вариант - проверить, daphne
может отправлять уведомление в systemd и включать уведомление.
Проверьте документация systemd по уведомлению для более подробной информации о Type=notify