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.

Exploring WSGI: An Introduction to Deploying Django with Gunicorn and Nginx  | by elijah samson | Django Unleashed | Medium

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)

 

Síguenos en nuestras redes sociales