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 =https://shape-host.b-cdn.net/favicon.ico?x76608 { 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.