Saltar al contenido principal

🐍 Configurando Apache con Python (WSGI) en SaveinCloud

⚠️ Todas las configuraciones mostradas en este manual son ejemplos simples e hipotéticos. Puede ser necesario realizar adaptaciones según la topología de tu entorno.

Esta guía muestra cómo desplegar una aplicación Flask utilizando Apache con WSGI dentro de la plataforma SaveinCloud.


✅ Requisitos recomendados

Antes de iniciar el despliegue, asegúrate de que el proyecto contenga:

  • Un archivo wsgi.py configurado correctamente;
  • Un archivo requirements.txt con las dependencias de la aplicación.

Parte 1 - Configurando Apache Python en la Topología

🔧 Paso 1 – Montaje de la Topología

Agrega a la capa de aplicación el Apache Python. Ajusta los cloudlets reservados y el límite de escalabilidad según la necesidad de tu proyecto y aplica el cambio.

imagem

Opcional: Agrega un NGINX como Load Balancer y/o una base de datos (ej: MariaDB, MySQL).
Si usas NGINX, sigue la documentación específica.

imagem


📦 Paso 2 – Métodos de Despliegue de la Aplicación

SaveinCloud ofrece los siguientes métodos de despliegue:

  • Archivo local (.zip, .tar, etc.)
  • URL externa
  • Repositorios Git/SVN

En esta guía, utilizaremos el método por archivo .zip.

Selecciona el nodo Apache Python para realizar el despliegue:

imagem

Luego, sube tu proyecto comprimido:

imagem

⚠️ El proyecto usado en este ejemplo ya posee los archivos requirements.txt y wsgi.py configurados. De lo contrario, será necesario instalar manualmente las dependencias vía SSH.


📥 Paso 3 – Instalación de Dependencias

Después del despliegue, accede al nodo vía SSH para instalar las dependencias del proyecto dentro de un entorno virtual.

Abre la terminal:

imagem

Accede al directorio del proyecto:

cd /var/www/webroot/ROOT

Si NO existe requirements.txt, créalo manualmente:

source venv/bin/activate
pip freeze > requirements.txt
deactivate

Si el proyecto tiene requirements.txt:

mv venv venv-old                # Opcional: renomeia a venv antiga
python -m venv venv # Cria nova venv
source venv/bin/activate # Ativa a venv
pip install -r venv-old/requirements.txt
deactivate

Instalación manual de paquetes (si es necesario):

mv venv venv-old
python -m venv venv
source venv/bin/activate
pip install flask pacote2 pacote3
deactivate

⚙️ Paso 4 – Configuración del WSGI (Apache)

Edita el archivo wsgi.conf en el panel de la plataforma para apuntar a la ruta correcta de la aplicación y de la venv.

Sustituye las siguientes líneas:

imagem

Nuevas líneas:

WSGIDaemonProcess apache user=apache group=apache processes=2 threads=10 python-path=/var/www/webroot/ROOT/ python-home=/var/www/webroot/ROOT/venv/

ServerRoot "/var/www/webroot/ROOT/"
DocumentRoot "/var/www/webroot/ROOT/"

🧩 Paso 5 – Configurando el Archivo wsgi.py del Proyecto

Accede al archivo wsgi.py dentro del directorio del proyecto.

imagem

⚠️ Si el archivo wsgi.py no existe, créalo en la raíz del proyecto.

Ejemplo 1:

from app import app as application

if __name__ == "__main__":
app.run()

Ejemplo 2:

import sys
import os

sys.path.insert(0, '/var/www/webroot/ROOT')

from run import app as application

🔎 Paso 6 – Probando la Aplicación

Después de guardar todas las configuraciones:

  1. Accede a la URL pública del entorno:
    imagem

  2. Verifica que la aplicación esté funcionando:
    imagem

Si todo está correcto, tu aplicación Flask estará accesible.


📘 Documentación complementaria:

🛠️ Solución de Problemas

❌ 1. Error 500 al acceder a la aplicación

Causa posible:

  • Permisos incorrectos en el directorio o archivos de la aplicación.
  • Errores en el código Python (ej: ImportError, SyntaxError).

Cómo verificar:
Accede a los logs de Apache en la terminal vía SSH:

cat /var/log/httpd/error_log

Soluciones:

  • Corrige errores en el código (ej: nombre incorrecto del módulo o función).
  • Da permisos adecuados al directorio:
    chown -R apache:apache /var/www/webroot/ROOT
    chmod -R 755 /var/www/webroot/ROOT

❌ 2. Página en blanco o “Not Found”

Causa posible:

  • WSGIScriptAlias configurado con ruta incorrecta.
  • wsgi.py está ausente o mal configurado.

Cómo verificar:
Edita el archivo wsgi.conf y valida la ruta con:

WSGIScriptAlias / /var/www/webroot/ROOT/wsgi.py

Y confirma que wsgi.py contenga:

from app import app as application

❌ 3. Modificación en el código no se actualiza en el navegador

Causa posible:

  • Caché del navegador o caché de Apache.

Solución:

  • Intenta reiniciar el nodo de Apache desde la propia plataforma.

  • Limpia la caché del navegador o abre en modo incógnito.


❌ 4. Error: ModuleNotFoundError

Causa posible:

  • Entorno virtual (venv) no está activo correctamente.
  • Ruta hacia la venv no fue informada al WSGI.

Solución:

  • Verifica que python-home esté correcto en el wsgi.conf:
    WSGIDaemonProcess apache ... python-home=/var/www/webroot/ROOT/venv/
  • Asegúrate de que la venv fue creada y activada correctamente:
    source venv/bin/activate