Logs específicos por aplicación en Python
Clase 16 de 22 • Curso de Despliegue de Aplicaciones Python en la Nube
Contenido del curso
Configuración de Servidores en la Nube para Despliegue
- 6

Cómo elegir recursos de servidor en AWS
03:33 min - 7

Cómo crear cuenta AWS con free tier
07:17 min - 8

Crear una instancia EC2 con Ubuntu en AWS
12:44 min - 9

SSH con llave .pem en Ubuntu AWS
08:41 min - 10

Cómo gestionar Ubuntu con apt y sudo
10:13 min - 11

Cómo DNS convierte tu IP en dominio memorable
13:55 min - 12

Cómo instalar certificados SSL con Certbot
05:16 min
Administración y Optimización de Servidores para Producción
- 13

Cómo clonar Django en servidor con SSH y Deploy Keys
14:41 min - 14

Configurar uWSGI como servicio para Django
14:34 min - 15

Conectar NGINX con uWSGI por proxy reverso
04:33 min - 16

Logs específicos por aplicación en Python
Viendo ahora - 17

Cómo configurar Sentry en Django
08:54 min - 18

Variables de entorno Django en servidor
04:28 min
Integración de Servicios Complementarios para Aplicaciones Python
Automatización y CI/CD para Despliegues Python
Configurar logs por aplicación en despliegues Python con Nginx y uWSGI permite detectar errores rápido, evitar mezclar información entre sitios y mejorar la seguridad. Aquí verás cómo agrupar logs, reiniciar servicios, revisar errores de uWSGI, usar tail -f para monitorear en tiempo real y por qué activar debug solo de forma temporal.
¿Por qué configurar logs por aplicación en Nginx y uWSGI?
Separar los logs de acceso y error por sitio evita confusiones cuando hay múltiples proyectos en el servidor. Al fallar un cambio, puedes ir directo al archivo correcto y diagnosticar en minutos.
- Agrupar por aplicación: define rutas específicas de logs para cada sitio. Evita mezclar eventos entre proyectos.
- Depuración más simple: identifica si el error viene de Nginx o del lado de Python/uWSGI.
- Seguridad: no expongas debug en producción. Maneja detalles sensibles en archivos y variables de entorno (.env).
¿Cómo aplicar cambios y usar logs para detectar errores?
Actualizar una rama, reinstalar dependencias y reiniciar servicios puede introducir fallos. Los logs guían el diagnóstico paso a paso.
¿Cómo cambiar de rama a develop con Git?
- Verifica el estado:
git status
- Resetea cambios locales si aplica:
git reset -r
- Trae ramas remotas y cambia a develop:
git pull
# luego realiza el switch a develop
¿Cómo reinstalar dependencias y reiniciar uWSGI?
- Activa el entorno virtual:
bin activate
- Instala dependencias actualizadas:
pip install -r requirements
- Reinicia uWSGI para aplicar cambios:
sudo service uwsgi restart
¿Cómo leer logs de uWSGI y encontrar el error?
- Revisa logs de uWSGI con privilegios:
sudo cat /var/log/... # navega hasta el archivo de tu app
- Si ves un 400 repetido, habilita debug temporalmente en settings de Django para entender el origen. Luego desactívalo.
- Ejemplo típico: el dominio debía incluirse completo en la configuración y una rama lo modificó al cambiar de main a develop. Ajusta y recarga.
Puntos clave: - Usar debug solo para validar. Expone IP del servidor, certificados y variables. No lo dejes activo. - Regresa la configuración a su estado seguro tras identificar el problema.
¿Cómo agrupar logs en Nginx y analizarlos en tiempo real?
Definir rutas de access_log y error_log por proyecto en Nginx crea archivos separados, claros y auditables.
¿Cómo definir access_log y error_log por sitio?
Edita el sitio en etc/nginx/sites-enabled con permisos y agrega rutas específicas:
# dentro del server o location correspondiente
access_log /var/log/nginx/deploy_with_python_access.log;
error_log /var/log/nginx/deploy_with_python_error.log;
- Usa nombres que reflejen la aplicación: por ejemplo, deploy_with_python_access.log.
- Guarda y valida la configuración:
nginx -t
- Reinicia Nginx si todo está correcto:
sudo service NGINX restart
¿Cómo seguir los logs en tiempo real con tail -f?
- Inspecciona el archivo de acceso o error:
tail -f /var/log/nginx/deploy_with_python_access.log
- Verás el request, el user agent y el código de respuesta (por ejemplo, 200 cuando todo va bien).
- Útil para ver qué peticiones llegan y cómo responde el servidor mientras haces pruebas.
Habilidades y conceptos que aplicarás:
- Gestión de ramas con Git para pasar de main a develop.
- Uso de entornos virtuales y actualización con pip install -r requirements.
- Reinicio de servicios: sudo service uwsgi restart y sudo service NGINX restart.
- Lectura y seguimiento de logs con sudo cat y tail -f.
- Configuración de access_log y error_log en Nginx por aplicación y/o location.
- Uso de debug solo temporal para diagnóstico seguro.
- Variables de entorno con .env para no quemar valores sensibles.
Como reto: configura uWSGI para que guarde sus logs en un archivo específico de tu aplicación, igual que hiciste con Nginx. ¿Qué dudas te gustaría resolver en los comentarios?