Contenido del curso
Configuración de Servidores en la Nube para Despliegue
- 6

Cómo elegir recursos de servidor en AWS
03:32 min - 7

Cómo crear tu cuenta AWS gratis
07:17 min - 8

Cómo crear una instancia EC2 en AWS
12:44 min - 9

Cómo conectarse a un servidor con SSH
08:41 min - 10

Instalar paquetes en Ubuntu con APT
10:13 min - 11

Cómo DNS convierte tu IP en dominio memorable
13:55 min - 12

Certificado SSL gratis con Certbot y Nginx
05:16 min
Administración y Optimización de Servidores para Producción
Integración de Servicios Complementarios para Aplicaciones Python
Automatización y CI/CD para Despliegues Python
uWSGI con NGINX para apps Django
Resumen
Configurar uWSGI con Python y NGINX te permite escalar tu aplicación Django más allá de lo que ofrece Gunicorn, controlando workers, procesos maestros y sockets de comunicación. Aquí verás cómo instalarlo, crear el archivo .ini, enlazarlo y validar que tu aplicación corre incluso después de reiniciar el servidor.
Por qué usar uWSGI en lugar de Gunicorn
uWSGI te da control sobre detalles que Gunicorn deja fuera. Puedes definir cuántos workers corren, manejar un proceso master que administra a los demás y mantener tu sitio en línea durante cada deploy.
A diferencia de Gunicorn, uWSGI funciona también con servidores como Apache, aunque en este flujo usamos NGINX. Esa flexibilidad lo hace popular en entornos de producción donde necesitas afinar memoria, número de procesos y comunicación vía socket.
¿Qué es uWSGI? Es un servidor de aplicaciones que ejecuta proyectos Python (y otros) detrás de un servidor web como NGINX, permitiendo configurar workers, procesos maestros y plugins específicos por lenguaje.
Cómo instalar uWSGI y el plugin de Python en el servidor
Conéctate al servidor con ssh usando tu llave de identificación, username e IP. Una vez dentro, ejecuta sudo apt install uwsgi para instalar el servidor base [01:00].
No basta con eso. Como tu aplicación es Python, necesitas instalar también el plugin correspondiente con sudo apt install uwsgi-plugin-python3. Este plugin es lo que le indica a uWSGI cómo ejecutar código Python específicamente.
Para validar la instalación, escribe uwsgi en la terminal. Verás todos los parámetros configurados por defecto: tamaño de memoria, número de procesos y límites operativos.
Cómo crear el archivo de configuración .ini en uWSGI
Los archivos de configuración viven en /etc/uwsgi, organizados en dos carpetas: apps-available (disponibles) y apps-enabled (habilitadas). Esta estructura es idéntica a la que NGINX usa para sus sitios.
Dentro de apps-available, crea tu archivo con sudo vim nombre-production.ini. El sufijo production te ayuda a diferenciar entornos cuando manejas varias aplicaciones [03:30].
Qué parámetros debe incluir tu archivo ini
El archivo arranca con [uwsgi] entre corchetes. A partir de ahí defines bloques clave para que tu aplicación corra:
- module: apunta al entry point de tu app, por ejemplo
config.uwsgi:application. Lo encuentras en tu repositorio dentro deconfig/uwsgi.py. - plugins: indica
python3para que uWSGI sepa qué intérprete usar. - socket: archivo de comunicación con NGINX, ubicado en
/tmp/deployWithPythonProduction.sock. Usa un nombre único porque/tmplo comparten muchos procesos. - chdir: ruta del proyecto, equivalente a hacer change directory hacia tu carpeta de aplicación.
- home: ruta del entorno virtual donde Python buscará librerías y dependencias.
- env: variables de entorno como
DJANGO_SETTINGS_MODULE. - master: en
true, activa el proceso maestro que administra el resto.
Para qué sirve el proceso master en uWSGI
El master es la pieza que mantiene tu sitio activo durante un deploy. Cuando subes cambios, este proceso se encarga de eliminar los workers viejos y crear los nuevos, evitando que tu aplicación quede caída en la transición.
¿Qué es un socket en uWSGI? Es un archivo en
/tmpque actúa como puente de comunicación entre uWSGI y NGINX, permitiendo que las peticiones del navegador lleguen a tu aplicación Python.
Cómo habilitar la aplicación con un link simbólico
Tener el archivo en apps-available no basta: la aplicación está disponible pero no activa. Para habilitarla, debes crear un link simbólico hacia apps-enabled.
Desde la carpeta apps-enabled, ejecuta:
bash sudo ln -s ../apps-available/deploy-production.ini .
Un error común es ejecutar el ln desde la carpeta equivocada o apuntar al archivo dentro de la misma apps-enabled. Si lo haces mal, verás el error Too many levels of symbolic links al intentar leer el archivo con cat [10:30].
Un truco útil cuando algo falla: ejecuta history | grep ln para revisar todos los comandos ln que has corrido y detectar cuál creaste mal.
Cómo validar que uWSGI está corriendo correctamente
Usa sudo service uwsgi status para revisar el estado del servicio. Si ves exit en lugar de procesos activos, algo en tu configuración o link simbólico falló.
La herramienta htop te muestra todos los procesos del servidor en tiempo real. Presiona F4 para filtrar por uwsgi y verás cuántos workers están activos. Por defecto aparecen tres: el master más dos workers.
Otra validación rápida: revisa que el socket exista en /tmp con ls /tmp. Si el archivo .sock está ahí, la conexión con NGINX queda lista.
Cómo aumentar el número de workers en uWSGI
Para escalar el número de procesos, edita tu archivo .ini con sudo vim y agrega:
ini processes = 4
Reinicia con sudo service uwsgi restart y valida con htop. Verás cinco procesos: un master y cuatro workers. Eso significa que tu aplicación puede manejar cuatro requests simultáneas en cada momento.
Con esta configuración, tu aplicación se ejecuta automáticamente incluso si reinicias el servidor, porque uWSGI corre como servicio de Linux y lee el archivo .ini al arrancar.
¿Cuántos workers configurarías para tu propio proyecto? Cuéntalo en los comentarios y comparte qué parámetros adicionales del manual oficial de uWSGI has probado.