Guía para configurar correctamente el archivo passenger_wsgi.py Imprimir

  • 0

Cuando creas una aplicación Python (como un proyecto en Django o Flask) en cPanel utilizando la herramienta Setup Python App, el servidor genera automáticamente un archivo en la raíz de tu proyecto llamado passenger_wsgi.py.

Si intentas entrar a tu web recién creada, verás una pantalla sencilla que dice "It works!" junto con la versión de Python. Ese texto proviene de la configuración por defecto de este archivo.

Para que tu web muestre tu aplicación real (y no el mensaje de prueba), necesitas modificar passenger_wsgi.py. Este archivo actúa como el "traductor" o puente entre el servidor web (Phusion Passenger) y el código de tu proyecto. Configurarlo mal es la causa número uno del molesto error "Incomplete response received from application".

En esta guía te enseñaremos cómo configurar tu passenger_wsgi.py de forma correcta para Django y Flask.

La regla de oro de Phusion Passenger

Antes de ver el código, hay una regla física e inquebrantable que debes conocer:

El objeto principal de tu aplicación SIEMPRE debe llamarse application.

Phusion Passenger busca de forma estricta un objeto ejecutable con el nombre exacto de application dentro de tu archivo passenger_wsgi.py. Si en tu código de Flask tu objeto principal se llama app (como es habitual), o si en Django no lo exportas correctamente, la aplicación fallará de inmediato.

Caso 1: Configuración para Flask

Por defecto, en un proyecto de Flask sueles inicializar el servidor con algo como app = Flask(__name__). Para que funcione en tu hosting, debes importar ese objeto app y renombrarlo como application.

Abre tu archivo passenger_wsgi.py en el Administrador de Archivos de cPanel, borra todo su contenido y pega el siguiente bloque:

import sys
import os

# 1. Agrega la carpeta de tu proyecto al sistema para que Python encuentre tus archivos
sys.path.insert(0, os.path.dirname(__file__))

# 2. Importa tu objeto Flask (asumiendo que tu archivo principal es 'main.py' o 'app.py')
# y renombralo como 'application' para que Passenger lo reconozca.
from main import app as application

Caso 2: Configuración para Django

En Django, la estructura es un poco diferente porque el propio framework ya cuenta con su propio archivo WSGI (wsgi.py) dentro de la carpeta de tu proyecto. Lo que haremos en el archivo de cPanel es redirigir el tráfico hacia él.

Borra el contenido de tu passenger_wsgi.py y reemplázalo por este código:

import sys
import os

# 1. Agrega la carpeta raíz de tu aplicación al path
sys.path.insert(0, os.path.dirname(__file__))

# 2. Indica a Django dónde se encuentra tu archivo de configuración 'settings.py'
# (Reemplaza 'mi_proyecto_django' por el nombre de la carpeta de tu proyecto)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mi_proyecto_django.settings")

# 3. Importa el gestor WSGI nativo de Django
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Paso a paso para aplicar y probar la configuración

Sigue esta secuencia para asegurarte de que el servidor web procese los cambios de forma limpia:

1. Sube y edita el archivo en cPanel: Paso 1.

Ve al Administrador de Archivos de tu cPanel, entra a la carpeta raíz de tu aplicación y edita el archivo passenger_wsgi.py aplicando el código correspondiente a tu framework (Flask o Django). Guarda los cambios.

2. Verifica tus rutas e importaciones: Paso 2.

Asegúrate de que los nombres de las carpetas coincidan exactamente. Recuerda que Linux distingue entre mayúsculas y minúsculas (no es lo mismo Mi_Proyecto que mi_proyecto).

3. Fuerza el reinicio de la aplicación: Paso 3.

Ve a la herramienta Setup Python App en cPanel y haz clic en el botón Restart (Reiniciar) en tu aplicación. Esto vaciará la memoria caché del servidor web y lo obligará a leer tu nuevo archivo passenger_wsgi.py.

4. Prueba tu sitio web: Paso 4.

Abre una pestaña en modo incógnito en tu navegador y accede a tu dominio. Tu sitio web ya debería cargar la interfaz de tu framework en lugar del mensaje de prueba de cPanel.

¿Qué hacer si aparece un error 500 o "Incomplete response"?

Si tras configurar el archivo e intentar cargar tu web te topas con una pantalla de error de Phusion Passenger, la causa más común es que tu entorno virtual no tiene instaladas las librerías necesarias (como el propio Django o Flask) o que hay un error de importación en tu código.

Para solucionarlo:

  1. Revisa el archivo stderr.log que se genera automáticamente en la carpeta raíz de tu aplicación.

  2. Abre este archivo con el editor de cPanel; allí verás el Traceback clásico de Python indicándote con precisión quirúrgica en qué línea de tu código o de tu passenger_wsgi.py ocurrió el fallo.

 


¿Le ha resultado útil esta respuesta?

« Atrás