Qué resuelve

Plantilla y flujo para crear un .service propio en systemd: usuario, directorio de trabajo, variables, reinicio automático, activación y logs.


Estructura recomendada

Archivo:

/etc/systemd/system/mi-app.service

Plantilla:

[Unit]
Description=Mi aplicación
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=deploy
Group=deploy
WorkingDirectory=/opt/mi-app
EnvironmentFile=-/etc/mi-app/env
ExecStart=/opt/mi-app/.venv/bin/python /opt/mi-app/app.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Crear servicio

sudo nano /etc/systemd/system/mi-app.service

Validar y activar:

sudo systemctl daemon-reload
sudo systemctl enable --now mi-app.service
systemctl status mi-app.service

Ver logs:

journalctl -u mi-app.service -f

Variables de entorno

Archivo:

/etc/mi-app/env

Contenido: