DEPLOY_Cpanel_sigeduc.txt Objetivo - Subir esta app Flask a cPanel usando Passenger. - La app debe quedar montada en: public_html/sigeduc Requisitos previos 1) cPanel con Passenger habilitado para Python. 2) MySQL disponible para la app (host/user/pass/database). Estructura recomendada (sube la carpeta tal cual) - Copiar todo este proyecto dentro de: public_html/sigeduc/ Ejemplo de contenido mínimo dentro de public_html/sigeduc/ - app.py - passenger_wsgi.py - wsgi.py - requirements.txt - conexion/ - controllers/ - routers/ - templates/ - static/ Configurar variables de entorno (recomendado) En cPanel/Passenger (o donde permita el panel) define: - SECRET_KEY - DB_HOST - DB_USER - DB_PASS - DB_NAME - SMTP_SERVER (si usas recuperación de contraseña) - SMTP_PORT - SMTP_USER - SMTP_PASSWORD - SMTP_FROM_EMAIL Importante: si no configuras SECRET_KEY/DB_*/SMTP_* se usarán valores fallback del código. Passenger (Python) - Apunta el “Application entry point” (o equivalente) a: public_html/sigeduc/passenger_wsgi.py - Asegúrate de usar el Python del usuario (si cPanel te pide seleccionar versión). Instalar dependencias En home del usuario (donde tengas permisos de escritura) ejecuta con el Python de cPanel: - pip install -r /ruta/a/public_html/sigeduc/requirements.txt Si cPanel no permite pip global, crea/usa un virtualenv si está disponible. Montaje en subcarpeta /sigeduc - Ya se agregó soporte basado en SCRIPT_NAME/APP_ROOT. - En el navegador prueba: https://TU_DOMINIO/sigeduc/ Pruebas funcionales 1) Login 2) Acciones que suben archivos (si aplica) 3) Export Excel (debe poder escribir en static/downloads-excel/) Nota de archivos generados - Se guardan XLSX en: public_html/sigeduc/static/downloads-excel/ - Si cPanel bloquea escritura, asegúrate de permisos de escritura para esa carpeta.