systemd: пример service-файла с автозапуском
Файл systemd unit описывает, как запускать сервис, от какого пользователя и после каких системных целей. Для собственного приложения создайте /etc/systemd/system/myapp.service, затем выполните daemon-reload, включите автозапуск и проверьте состояние через systemctl status.
Пример unit-файла
[Unit]
Description=My application
After=network.target
[Service]
Type=simple
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/venv/bin/python /opt/myapp/app.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetСоздайте отдельного системного пользователя и проверьте, что он может читать приложение и писать только в нужные каталоги. Укажите абсолютные пути в ExecStart.
Применить unit и включить автозапуск
sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
sudo systemctl status myapp.service --no-pagerКоманда | Действие |
|---|---|
| Запустить сейчас |
| Запускать при старте системы |
| Перезапустить сервис |
| Отключить автозапуск |
Посмотреть логи
sudo journalctl -u myapp.service -n 100 --no-pager
sudo journalctl -u myapp.service -fПервая команда показывает последние 100 записей, вторая следит за новыми сообщениями.
Почему сервис не стартует?
Смотрите systemctl status и journalctl -u myapp. Частые причины — неверный путь, недоступный рабочий каталог, права пользователя или порт, занятый другим процессом.