systemd: пример service-файла с автозапуском

Категория: Nginx · Язык: Bash · Обновлено:

Файл 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 и включить автозапуск

Bash
sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
sudo systemctl status myapp.service --no-pager

Команда

Действие

systemctl start myapp

Запустить сейчас

systemctl enable myapp

Запускать при старте системы

systemctl restart myapp

Перезапустить сервис

systemctl disable myapp

Отключить автозапуск

Посмотреть логи

Bash
sudo journalctl -u myapp.service -n 100 --no-pager
sudo journalctl -u myapp.service -f

Первая команда показывает последние 100 записей, вторая следит за новыми сообщениями.

Почему сервис не стартует?

Смотрите systemctl status и journalctl -u myapp. Частые причины — неверный путь, недоступный рабочий каталог, права пользователя или порт, занятый другим процессом.