Я пытаюсь запустить супервизор из systemd, и я следую этому руководству Вот.
После создания этого файла /etc/systemd/system/supervisord.service
со следующим содержанием:
[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target
[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
Alias=supervisord.service
Когда я запускаю его, я получаю следующую ошибку:
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Started Supervisor daemon.
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[8772]: supervisord.service: Failed to execute command: No such file or directory
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[8772]: supervisord.service: Failed at step EXEC spawning /usr/local/bin/supervisord: No such file or directory
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Main process exited, code=exited, status=203/EXEC
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Failed with result 'exit-code'.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Service hold-off time over, scheduling restart.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Scheduled restart job, restart counter is at 1.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Stopped Supervisor daemon.
Ясно, что здесь говорится, что такого каталога нет, но действительно ли создание его является правильным способом решения проблемы?
Причина, по которой я не уверен, заключается в том, что, когда я смотрю на другие (я думаю) похожие проблемы (пример: Вот), они вроде по-другому исправляют. Также в руководстве не упоминается этот путь (тот, который не существует) где-либо еще, кроме содержимого supervisord.service
, поэтому я совершенно не понимаю, что здесь происходит.
Может ли кто-нибудь объяснить мне или указать на что-то конкретное, чтобы прочитать, чтобы решить мою проблему правильным способом?
Спасибо!
ОБНОВИТЬ
locate supervisord
дает:
/etc/supervisor/supervisord.conf
/etc/systemd/system/supervisord.service
/usr/bin/echo_supervisord_conf
/usr/bin/supervisord
/usr/lib/python2.7/dist-packages/supervisor/supervisord.py
/usr/lib/python2.7/dist-packages/supervisor/supervisord.pyc
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisord.py
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisord.pyc
/usr/share/man/man1/echo_supervisord_conf.1.gz
/usr/share/man/man1/supervisord.1.gz
/var/log/supervisor/supervisord.log
locate supervisorctl
дает:
/usr/bin/supervisorctl
/usr/lib/python2.7/dist-packages/supervisor/supervisorctl.py
/usr/lib/python2.7/dist-packages/supervisor/supervisorctl.pyc
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisorctl.py
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisorctl.pyc
/usr/share/man/man1/supervisorctl.1.gz
На самом деле вы не следовали этому руководству и не устанавливали пакет супервизора через easy_install; он устанавливается из пакетов Ubuntu. Пакет уже содержит модуль systemd supervisor.service
который вы можете просто запустить. Вам не нужно создавать свой собственный блок.
Этот учебник также довольно плох, поскольку не объясняет, почему они приняли странные решения, которые они приняли. Я бы просто выбросил этот учебник и использовал существующий модуль супервизора, который у вас уже есть.
Конечно, я бы также просто выбросил supervisord, потому что он избыточен; практически все, что он делает, покрывается (и лучше) системой systemd. Я бы также выбросил все учебники, которые побудили вас попробовать установить supervisord.
В вашем служебном файле неверное расположение двоичных файлов.
В файле измените
/usr/local/bin/supervisord
Чтобы
/usr/bin/supervisord
И
/usr/local/bin/supervisorctl
Чтобы
/usr/bin/supervisorctl
Далее запускаем команду systemctl daemon-reload
а потом systemctl start supervisord
.