Desplegar una aplicación Django implica moverla desde tu entorno de desarrollo local a un servidor donde pueda ser accesible por los usuarios. Este proceso puede parecer intimidante al principio, pero con una comprensión clara de los pasos involucrados, se puede manejar de manera efectiva. En esta sección, cubriremos los conceptos básicos y avanzados del despliegue de aplicaciones Django.

  1. Preparativos para el Despliegue

Antes de desplegar tu aplicación, hay varios pasos preliminares que debes seguir:

1.1. Configuración del Entorno de Producción

  • Configuración de settings.py: Django utiliza un archivo de configuración (settings.py) que debe ser ajustado para el entorno de producción.
    • DEBUG: Asegúrate de que DEBUG esté configurado en False.
    • ALLOWED_HOSTS: Define los dominios y direcciones IP que pueden servir tu aplicación.
    • DATABASES: Configura la base de datos de producción.
    • STATIC_ROOT: Define el directorio donde se recopilarán los archivos estáticos.
# settings.py
DEBUG = False
ALLOWED_HOSTS = ['tu-dominio.com', 'www.tu-dominio.com']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'nombre_de_tu_base_de_datos',
        'USER': 'tu_usuario',
        'PASSWORD': 'tu_contraseña',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

1.2. Recolección de Archivos Estáticos

  • Comando collectstatic: Este comando recopila todos los archivos estáticos en el directorio definido por STATIC_ROOT.
python manage.py collectstatic

1.3. Configuración de Variables de Entorno

  • Variables Sensibles: Utiliza variables de entorno para manejar información sensible como claves secretas y configuraciones de base de datos.
export DJANGO_SECRET_KEY='tu_clave_secreta'
export DJANGO_SETTINGS_MODULE='tu_proyecto.settings'

  1. Elección del Servidor

Existen varias opciones para desplegar aplicaciones Django. Aquí cubriremos dos de las más populares: Heroku y DigitalOcean.

2.1. Despliegue en Heroku

Heroku es una plataforma como servicio (PaaS) que facilita el despliegue de aplicaciones web.

Pasos para Desplegar en Heroku

  1. Instalar Heroku CLI: Descarga e instala la herramienta de línea de comandos de Heroku.
curl https://cli-assets.heroku.com/install.sh | sh
  1. Iniciar Sesión en Heroku: Autentícate en Heroku.
heroku login
  1. Crear un Nuevo Proyecto en Heroku: Crea una nueva aplicación en Heroku.
heroku create nombre-de-tu-aplicacion
  1. Configurar el Archivo Procfile: Define el comando que Heroku debe usar para ejecutar tu aplicación.
web: gunicorn tu_proyecto.wsgi --log-file -
  1. Configurar el Archivo requirements.txt: Asegúrate de que todas las dependencias estén listadas.
pip freeze > requirements.txt
  1. Configurar el Archivo runtime.txt: Especifica la versión de Python.
python-3.9.1
  1. Desplegar la Aplicación: Usa Git para desplegar tu aplicación en Heroku.
git add .
git commit -m "Preparando para despliegue en Heroku"
git push heroku master
  1. Migrar la Base de Datos: Ejecuta las migraciones en Heroku.
heroku run python manage.py migrate

2.2. Despliegue en DigitalOcean

DigitalOcean es un proveedor de infraestructura en la nube que ofrece servidores virtuales (droplets).

Pasos para Desplegar en DigitalOcean

  1. Crear un Droplet: Inicia sesión en DigitalOcean y crea un nuevo droplet con Ubuntu.

  2. Acceder al Droplet: Usa SSH para acceder a tu droplet.

ssh root@tu_droplet_ip
  1. Instalar Dependencias: Instala Python, pip, y otros paquetes necesarios.
apt update
apt install python3-pip python3-dev libpq-dev nginx
  1. Configurar el Entorno Virtual: Crea y activa un entorno virtual.
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
  1. Instalar Dependencias del Proyecto: Instala las dependencias listadas en requirements.txt.
pip install -r requirements.txt
  1. Configurar Gunicorn: Instala y configura Gunicorn para servir tu aplicación.
pip install gunicorn
gunicorn --workers 3 tu_proyecto.wsgi:application
  1. Configurar Nginx: Configura Nginx para servir tu aplicación.
server {
    listen 80;
    server_name tu_dominio.com www.tu_dominio.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /ruta/a/tu/proyecto/staticfiles/;
    }
}
  1. Reiniciar Nginx: Aplica los cambios y reinicia Nginx.
systemctl restart nginx

  1. Conclusión

Desplegar una aplicación Django puede parecer complejo, pero siguiendo estos pasos puedes hacerlo de manera efectiva. Ya sea que elijas Heroku por su simplicidad o DigitalOcean por su flexibilidad, entender los fundamentos del despliegue te permitirá llevar tus aplicaciones Django a producción con confianza.

Resumen

  • Configuración del Entorno de Producción: Ajusta settings.py, recolecta archivos estáticos y configura variables de entorno.
  • Elección del Servidor: Heroku y DigitalOcean son opciones populares con diferentes ventajas.
  • Pasos de Despliegue: Sigue los pasos específicos para cada plataforma para desplegar tu aplicación.

Con estos conocimientos, estás listo para desplegar tu aplicación Django y hacerla accesible al mundo. En el próximo tema, exploraremos las mejores prácticas de seguridad para mantener tu aplicación segura en producción.

© Copyright 2024. Todos los derechos reservados