gcdoramas.com

Desplegar Flask en producción

Desplegar Flask en producción

Desplegar Flask en producción (guía paso a paso)
¿Qué significa poner Flask en producción?

Cuando desarrollas con Flask usas:

app.run(debug=True)

Eso NO es producción. Es solo para desarrollo.

Desplegar en producción significa:

Tu app está disponible en internet
Usa un servidor real (no el de desarrollo)
Es segura, estable y accesible
¿Qué necesitas para producción?

Para desplegar Flask correctamente necesitas:

Un servidor (VPS, cloud o hosting)
Un servidor WSGI (como Gunicorn)
Un proxy inverso (como Nginx)
Tu código listo
Opción más común: Gunicorn + Nginx (Linux)

Esta es la forma más usada en producción.

Paso 1: Instalar dependencias
pip install gunicorn
Paso 2: Ejecutar con Gunicorn

En lugar de python app.py, usas:

gunicorn -w 4 -b 0.0.0.0:8000 run:app
-w 4 → número de workers
-b → dirección y puerto
run:app → archivo y variable Flask
Paso 3: Instalar Nginx

En Ubuntu:

sudo apt update
sudo apt install nginx
Paso 4: Configurar Nginx

Archivo de configuración:

server {
listen 80;
server_name 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;
}
}
Paso 5: Reiniciar Nginx
sudo systemctl restart nginx
Paso 6: Abrir el puerto
sudo ufw allow 'Nginx Full'
Usar HTTPS (SSL)

Muy importante para producción.

Instala Certbot:

sudo apt install certbot python3-certbot-nginx

Luego:

sudo certbot --nginx

Esto habilita HTTPS automáticamente.

Alternativas de despliegue

Si no quieres configurar servidor manual:

🔹 Plataformas fáciles
Render
Railway
PythonAnywhere
Heroku

Son más simples pero menos flexibles.

Archivos importantes
requirements.txt
pip freeze > requirements.txt
Variables de entorno

Nunca pongas esto en el código:

Contraseñas
Claves secretas
Conexión a base de datos

Usa variables de entorno.

Buenas prácticas

Si quieres que tu app sea estable:

No uses debug=True
Usa Gunicorn o uWSGI
Configura Nginx correctamente
Usa HTTPS
Maneja logs y errores
Reinicio automático (systemd o supervisor)
Errores comunes
❌ Usar app.run() en producción
❌ No configurar Nginx
❌ No usar HTTPS
❌ Exponer credenciales
❌ No abrir puertos
Ejemplo de flujo completo
Subes tu código al servidor
Instalas dependencias
Ejecutas con Gunicorn
Nginx recibe tráfico
Nginx lo pasa a Flask
Usuario accede desde el navegador
Conclusión

Desplegar Flask en producción es el paso que convierte tu proyecto en algo real y accesible para usuarios.

Si dominas esto, ya puedes:

Publicar sistemas web
Crear APIs públicas
Monetizar con AdSense o servicios