Generalidades
Este artículo explica cómo usar linger con un aplicación de Node.js. Esta combinación permite que tu aplicación ejecute procesos persistentes y que tus servicios se reinicien si tu aplicación se cae o el servidor se reinicia.
Requisitos previos
Este artículo asume que has completado los siguientes pasos:
- Actualizado a un plan de alojamiento VPS o Servidor Dedicado
- Configurado un Servidor Proxy en el panel
- Agrega un subdominio para alojar tus activos estáticos
- Creado un usuario Shell y asegúrate de poder iniciar sesión en tu servidor a través de SSH.
Paso 1 — Instalar linger
Para instalar linger en tu usuario, inicia sesión en tu servidor a través de SSH y corre el siguiente comando:
[server]$ loginctl enable-linger
Este comando no responderá con ninguna salida.
Paso 2 — Configurado la unidad de usuario systemd
Este paso configura Node para trabajar con unidades de usuario de systemd en el servidor.
- Crea los siguientes directorios:
[server]$ mkdir -p ~/.config/systemd/user/
- Crea un archivo myapp.service en el directorio .config/systemd/user:
[server]$ nano ~/.config/systemd/user/myapp.service
-
Agrega el siguiente código a este archivo:
[Unit] Description=Systemd instance to serve Node application After=network.target [Service] WorkingDirectory=/path/to/your/app ExecStart=/usr/bin/node /path/to/your/app/app.js Environment="PATH=/usr/bin:/usr/local/bin" Environment=NODE_ENV=production ExecReload=/bin/kill -s HUP $MAINPID KillMode=mixed TimeoutStopSec=5 PrivateTmp=true Restart=on-failure [Install] WantedBy=default.target
- Edita las líneas resaltadas de arriba así:
- WorkingDirectory: La ruta a la aplicación de tu sitio web.
- ExecStart: La ruta a tu instalación de node.
- Habilita la unidad del usuario de tu aplicación de Node:
[server]$ systemctl --user enable myapp
- Inicia la unidad de tu aplicación Node:
[server]$ systemctl --user start myapp
- Confirma que está corriendo:
[server]$ systemctl --user status myapp
Los servicios de tu aplicación ahora se reiniciarán automáticamente cuando el servidor se reinicie o si la aplicación se cae.