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 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:app
Solo 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.