Generalidades
Este artículo explica cómo usar el paquete de linger de Python con el servidor Gunicorn WSGI. 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 Administrado o Servidor Dedicado
Configurado un Servidor Proxy en el panel
Instalado una versión personalizada de Python
Creado un entorno virtual
Configurado tu aplicación Gunicorn en el entorno virtual
Agregado un subdominio para alojar tus activos estáticos.
Creado un usuario Shell y puedas 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 — Configurar Gunicorn
Este paso configura Gunicorn para trabajar con unidades de usuario de systemd en el servidor.
Crea los siguientes directorios:
[server]$ mkdir -p ~/.config/systemd/user/
Crea un archivo gunicorn.service en el directorio .config/systemd/user:
[server]$ nano ~/.config/systemd/user/gunicorn.service
Agrega el siguiente código a este archivo.
[Unit] Description=Gunicorn instance to serve application After=network.target [Service] WorkingDirectory=/path/to/your/app Environment="PATH=/path/to/venv/bin" ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind=<example.com>:<port> myapp:app ExecReload=/bin/kill -s HUP $MAINPID KillMode=mixed TimeoutStopSec=5 PrivateTmp=true Restart=on-failure [Install] WantedBy=default.target
Edita las líneas resaltadas a continuación como lo siguiente:
WorkingDirectory: La ruta a la aplicación de tu sitio web.
Environment: La ruta a tu entorno virtual.
ExecStart: La ruta a tu instalación de gunicorn.
example.com: El nombre de tu sitio web.
port: El número de puerto que configuraste en tu Servidor Proxy.
myapp: El nombre de tu aplicación.
Revisa Running Gunicorn para más información.
Habilita la unidad del usuario de gunicorn:
[server]$ systemctl --user enable gunicorn
Inicia la unidad con gunicorn:
[server]$ systemctl --user start gunicorn
Confirma que está corriendo:
[server]$ systemctl --user status gunicorn
Los servicios de tu aplicación ahora se reiniciarán automáticamente cuando el servidor se reinicie o si la aplicación se cae.
Configurar el inicio de sesión
Puedes configurar el acceso y el registro de errores modificando el archivo gunicorn.service creado anteriormente. El código que apunta a tus archivos de registro debe agregarse a la línea ExecStart. Por ejemplo:
ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind=<example.com>:<port> --access-logfile /path/to/venv/bin/gunicorn/logs/gunicorn_access --error-logfile /path/to/venv/bin/gunicorn/logs/gunicorn_error --capture-output myapp:appSolo tienes que ajustar la ruta a tu directorio de registros. Por ejemplo:
/path/to/venv/bin/gunicorn/logs/
Luego, Gunicorn creará automáticamente los archivos de registro de acceso y errores utilizando este código.