Solución al "Error 500 Internal Server Error" en el backend de Python. Imprimir

  • 0

El temido "500 Internal Server Error" (Error interno del servidor) es uno de los problemas más frustrantes con los que te puedes topar al desplegar una aplicación Python (como Django, Flask o FastAPI) en tu hosting cPanel.

La razón por la que resulta tan molesto es que se trata de un mensaje genérico. Funciona como un escudo de seguridad: el servidor web (Phusion Passenger) sabe que algo falló en tu código de Python, pero previene mostrar los detalles técnicos públicamente para que los visitantes no vean las rutas de tu servidor ni información confidencial.

En esta guía te enseñaremos la metodología profesional para "quitarle la venda" al servidor, encontrar el fallo real y solucionarlo en pocos minutos.

El origen del problema: ¿Por qué ocurre?

En el 99% de los casos en cPanel, un error 500 en Python no significa que el servidor web esté roto. Significa que tu aplicación de Python ha colapsado (crasheado) al intentar iniciarse. Los detonantes más comunes son:

  • Falta de librerías: Tu código intenta importar un paquete (como requests o pandas) que no has instalado en el entorno virtual de cPanel.

  • Errores en passenger_wsgi.py: Un error de sintaxis en el archivo que conecta tu app con el servidor, o la ausencia del objeto obligatorio application.

  • Rutas incorrectas: Tu código no encuentra el archivo .env o la base de datos SQLite debido a que las rutas absolutas están mal configuradas.

  • Permisos de archivos inadecuados: Archivos clave de tu proyecto configurados con permisos demasiado abiertos (como 777), lo cual es bloqueado automáticamente por el servidor por seguridad.

Ruta de diagnóstico: Cómo resolver el Error 500 paso a paso

No intentes adivinar qué está fallando cambiando código al azar. Sigue esta secuencia técnica para diagnosticar y solucionar el error a la primera:

1. Localiza y lee el archivo stderr.log: Paso 1.

Abre el Administrador de Archivos de cPanel y entra a la carpeta raíz de tu aplicación Python (fuera de public_html). Busca un archivo llamado stderr.log.

Este archivo es el registro de fallos de Python. Haz clic derecho, selecciona View (Ver) y ve al final del archivo. Allí encontrarás el Traceback de Python detallando la línea exacta del código y el archivo que causó el colapso.

2. Corrige errores de importación (ModuleNotFoundError): Paso 2.

Si el log dice algo como ModuleNotFoundError: No module named 'django', significa que tu entorno virtual no tiene instalada esa dependencia.

Ve a Setup Python App en cPanel, entra a editar tu aplicación y en la sección de paquetes escribe el nombre de la librería faltante, haz clic en Add y luego en Update para instalarla.

3. Corrige la sintaxis en passenger_wsgi.py: Paso 3.

Si el error apunta directamente a passenger_wsgi.py, asegúrate de que el objeto ejecutable principal se llame estrictamente application (y no app o cualquier otro nombre). 

4. Corrige permisos de carpetas y archivos: Paso 4.

En servidores con cPanel, los permisos incorrectos provocan errores 500 inmediatos.

  • Tus carpetas de proyecto deben tener permisos 755 (nunca 777).

  • Tus archivos de Python (incluyendo .py y .wsgi) deben tener permisos 644 o 755.

    Puedes ajustar los permisos haciendo clic derecho sobre la carpeta o archivo en el Administrador de Archivos de cPanel y seleccionando Change Permissions.

5. Reinicia tu aplicación: Paso 5.

Una vez que apliques los cambios, Passenger mantendrá el error antiguo en caché si no lo reinicias.

Ve a Setup Python App en cPanel y presiona el botón Restart de tu aplicación para forzar la lectura del código nuevo.

Visualizando los registros de error

Para que te familiarices con lo que debes buscar, aquí tienes un ejemplo real de cómo se visualiza el archivo de errores de Python en tu servidor:

Una vez identificado el error en este archivo, la solución se vuelve evidente de inmediato.

Dos consejos profesionales de prevención

  • Mantén tu archivo requirements.txt actualizado: Al desarrollar localmente, ejecuta siempre pip freeze > requirements.txt. Así podrás subir este archivo a tu cPanel y, desde la herramienta Setup Python App, instalar todas tus dependencias de un solo golpe haciendo clic en el botón Run Pip Install.

  • Verifica la compatibilidad de versiones de Python: Asegúrate de que la versión de Python que elegiste en cPanel al crear tu aplicación coincida con la que usaste para desarrollar localmente. Una diferencia de versiones puede causar fallos de sintaxis inesperados en librerías modernas.

¿El archivo stderr.log está vacío o el error persiste?

Si después de realizar estas comprobaciones sigues viendo la pantalla del Error 500, es posible que el fallo esté a nivel de reglas de Apache (en el archivo .htaccess) o de una base de datos mal conectada. No pases horas de frustración adivinando el problema. Abre un ticket con nuestro departamento de soporte técnico; nuestros administradores de sistemas revisarán los registros de Apache de nivel de servidor para aislar y solucionar el error de tu aplicación en pocos minutos.

 


¿Le ha resultado útil esta respuesta?

« Atrás