Mi archivo de servicio systemd está a nombre de os.service
y tiene la siguiente línea de configuración.
# This systemd service file will help supervise os service
[Unit]
Description=Os Server
After= network.target
[Service]
# Preferably configure a non-privileged user
# User=deploy
# Group=deploy
# Environment variables shared across the config
#EnvironmentFile= # environment file to be used, includes RACK_ENV
EnvironmentFile=/home/deploy/test/shared/.env
SyslogIdentifier=test
PIDFile=/home/deploy/test/shared/tmp/server.pid
# Specify the path to your test application root
# WorkingDirectory=/home/deploy/test/
# Start/Reload/Stop syntax
ExecStart=/home/deploy/test/current
# TimeoutSec=15
# TimeoutStopSec=10
RestartSec=5s
# Restart os, always if it dies for some reason
Restart=always
[Install]
WantedBy=multi-user.target
En el servidor, cuando desconecto mi conexión ssh, el servicio muere y da como resultado502 Puerta de enlace no válida. Tengo que hacer ssh y ejecutar systemctl --user start os.service
para iniciar y hacer que funcione. Nuevamente, una vez que cierro mi terminal, os.service vuelve a morir.
Respuesta1
Está ejecutando el servicio desde su administrador de usuarios ( --user
) y aparentemente logind
no tiene habilitada la permanencia. Como resultado, su sesión (incluido cualquier servicio iniciado dentro de ella) se cierra cada vez que cierra la sesión.
Para cambiar este comportamiento es necesariopermitir persistir:
sudo loginctl enable-linger $USER
Esto iniciará un administrador de usuarios al iniciar y permitirá que sus servicios sobrevivan a sus sesiones de inicio de sesión.
Un mejor enfoque para un servicio del sistema como este es ejecutarlo como su propio usuario, administrado por la instancia principal de systemd.