Django es un framework de desarrollo web de alto nivel que fomenta el desarrollo rápido y el diseño pragmático. Popular entre los desarrolladores por su elegancia y simplicidad, Django facilita la creación de sitios web complejos con menos código. Para desplegar aplicaciones Django en producción, es común usar Nginx como servidor web frente a Gunicorn, un servidor HTTP WSGI para Python. Esta configuración proporciona una combinación robusta y escalable para servir aplicaciones web. En este artículo, te guiaré a través de los pasos para configurar Django con Nginx y Gunicorn, ofreciendo ejemplos reales de líneas de comandos y configuraciones.

Paso 1: Preparar tu Aplicación Django

Asegúrate de que tu aplicación Django esté lista para la producción. Esto incluye configurar la base de datos, recopilar archivos estáticos y realizar cualquier ajuste necesario en settings.py como DEBUG = False.

Paso 2: Instalar Gunicorn

Gunicorn actúa como el servidor de aplicaciones web, sirviendo tu proyecto Django. Instálalo usando pip:

pip install gunicorn

Una vez instalado, puedes probar que Gunicorn puede servir tu aplicación correctamente ejecutando:

gunicorn --workers 3 mi_proyecto_django.wsgi:application

Reemplaza mi_proyecto_django con el nombre de tu proyecto Django. Si todo está configurado correctamente, Gunicorn comenzará a servir tu aplicación Django.

Paso 3: Configurar Nginx

Nginx se utilizará como un proxy inverso para Gunicorn, manejando solicitudes HTTP y pasándolas a Gunicorn. Primero, instala Nginx:

sudo apt update
sudo apt install nginx

Luego, configura Nginx para pasar solicitudes a Gunicorn. Crea un nuevo archivo de configuración de Nginx para tu proyecto:

sudo nano /etc/nginx/sites-available/mi_proyecto_django

Agrega la siguiente configuración, ajustando los nombres y rutas según sea necesario:

server {
    listen 80;
    server_name tu_dominio.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /ruta/a/tu/proyecto;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/ruta/a/tu/proyecto/mi_proyecto_django.sock;
    }
}

Activa la configuración enlazando el archivo en sites-enabled:

sudo ln -s /etc/nginx/sites-available/mi_proyecto_django /etc/nginx/sites-enabled

Verifica la configuración de Nginx y reinicia el servicio:

sudo nginx -t
sudo systemctl restart nginx

Paso 4: Ejecutar Gunicorn con Supervisor

Para asegurar que Gunicorn se ejecute continuamente y se reinicie en caso de errores, usa Supervisor:

sudo apt-get install supervisor

Crea un archivo de configuración para tu proyecto en Supervisor:

sudo nano /etc/supervisor/conf.d/mi_proyecto_django.conf

Añade la siguiente configuración:

[program:mi_proyecto_django]
command=/ruta/a/tu/entorno/virtual/bin/gunicorn --workers 3 --bind unix:/ruta/a/tu/proyecto/mi_proyecto_django.sock mi_proyecto_django.wsgi:application
directory=/ruta/a/tu/proyecto
autostart=true
autorestart=true
stderr_logfile=/var/log/mi_proyecto_django.err.log
stdout_logfile=/var/log/mi_proyecto_django.out.log

Actualiza Supervisor y arranca el proceso:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start mi_proyecto_django

Servicios de Shape.host

Para aquellos interesados en desplegar aplicaciones Django con la configuración de Nginx y Gunicorn en un entorno optimizado y seguro, Shape.host ofrece servicios de Cloud VPS que pueden ser la solución perfecta. Con opciones de VPS en la nube, Shape.host proporciona la flexibilidad y escalabilidad necesarias para crecer con tus proyectos, asegurando al mismo tiempo altos niveles de rendimiento y seguridad. Además, el equipo de soporte técnico de Shape.host está disponible para ayudarte con la configuración y el mantenimiento de tu servidor, permitiéndote concentrarte en el desarrollo de tu aplicación sin preocuparte por la infraestructura subyacente.