Desplegar Django en Producción con Nginx y Gunicorn
¿Qué es Gunicorn?
El Gunicorn "Green Unicorn" es un servidor HTTP de interfaz de puerta de enlace de servidor web Python. Es un modelo de trabajador previo a la bifurcación, adaptado del proyecto Unicorn de Ruby.
Gunicorn está diseñado para que diversos servidores web puedan interactuar con él. Además, no le importa el servidor web que hayas usado para crear tu aplicación, siempre y cuando se pueda interactuar con ella mediante la interfaz WSGI.
Gunicorn se encarga de todo lo que ocurre entre el servidor web y tu aplicación web. De esta forma, al programar tu aplicación Django.
Guía paso a paso y detallada para:
-
Instalar Gunicorn
-
Ejecutar tu proyecto Django con Gunicorn
-
Redireccionar el tráfico desde Nginx a Django usando Gunicorn
Paso 1: Acceder al servidor y activar entorno virtual
cd /home/digitaleducas/proyecto1
source entorno/bin/activate
Paso 2: Instalar Gunicorn en el entorno virtual
pip install gunicorn
Verifica que se instaló:
gunicorn --version
Paso 3: Configurar Nginx
Crear archivo de configuración
sudo nano /etc/nginx/sites-available/digitaleducas
Agrega este contenido, adaptado a tu caso:
server {
listen 80;
server_name localhost 127.0.0.1; # O tu IP pública
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/digitaleducas/proyecto1;
}
location /media/ {
root /home/digitaleducas/proyecto1;
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
Cambia server_namepor tu dominio real o IP.
Activar el sitio
sudo ln -s /etc/nginx/sites-available/digitaleducas /etc/nginx/sites-enabled
Probar y reiniciar Nginx
sudo nginx -t
sudo systemctl restart nginx
Paso 4: Probar que Gunicorn funcione con Django
Asume que tu proyecto Django se llama digitaleducas (puedes cambiar el nombre por el tuyo). Ejecuta:
gunicorn --workers 3 --bind 127.0.0.1:8000 digitaleducas.wsgi:application
-
Usa 3 workers (procesos).
-
Escucha en el puerto 8000.
-
Usa el archivo wsgi.py del proyecto Django.
Verifica que tu sitio está corriendo en http://127.0.0.1:8000 accediendo desde el navegador si estás en local.
⚠️ Si funciona bien, presiona Ctrl+C para detenerlo por ahora.
Conclusión:
Tienes:
✔ Gunicorn instalado y ejecutando tu app Django
✔ Nginx redirigiendo tráfico HTTP a Gunicorn
✔ Gunicorn corriendo como servicio del sistema (systemd)