mod_wsgi

mod_wsgi es un servidor WSGI integrado con el servidor Apache httpd. El moderno comando mod_wsgi-express facilita la configuración e inicio del servidor sin necesidad de escribir la configuración de Apache httpd.

  • Estrechamente integrado con Apache httpd.

  • Es compatible directamente con Windows.

  • Requiere un compilador y las cabeceras de desarrollo de Apache para su instalación.

  • No requiere la configuración de un proxy inverso.

Esta página describe los aspectos básicos de la ejecución de mod_wsgi-express, no la instalación y configuración más compleja con httpd. Asegúrese de leer la documentación de mod_wsgi-express, mod_wsgi y Apache httpd para entender qué características están disponibles.

Instalación

La instalación de mod_wsgi requiere un compilador y el servidor Apache y las cabeceras de desarrollo instaladas. Obtendrá un error si no lo están. La forma de instalarlos depende del sistema operativo y del gestor de paquetes que utilices.

Crea un virtualenv, instala tu aplicación y luego instala mod_wsgi.

$ cd hello-app
$ python -m venv .venv
$ . .venv/bin/activate
$ pip install .  # install your application
$ pip install mod_wsgi

Ejecutando

El único argumento de mod_wsgi-express especifica un script que contiene tu aplicación Flask, que debe llamarse application. Puedes escribir un pequeño script para importar tu aplicación con este nombre, o para crearla si utilizas el patrón de fábrica de aplicaciones.

wsgi.py
from hello import app

application = app
wsgi.py
from hello import create_app

application = create_app()

Ahora ejecute el comando mod_wsgi-express start-server.

$ mod_wsgi-express start-server wsgi.py --processes 4

La opción --processes especifica el número de procesos de trabajo a ejecutar; un valor inicial podría ser CPU * 2.

Los registros de cada solicitud no se muestran en el terminal. Si se produce un error, su información se escribe en el archivo de registro de errores que se muestra al iniciar el servidor.

Vinculación externa

A diferencia de los otros servidores WSGI de esta documentación, mod_wsgi puede ejecutarse como root para enlazar con puertos privilegiados como el 80 y el 443. Sin embargo, debe ser configurado para dejar los permisos a un usuario y grupo diferente para los procesos trabajadores.

Por ejemplo, si creaste un usuario y un grupo hello, deberías instalar tu virtualenv y tu aplicación como ese usuario, y luego decirle a mod_wsgi que se pase a ese usuario después de arrancar.

$ sudo /home/hello/.venv/bin/mod_wsgi-express start-server \
    /home/hello/wsgi.py \
    --user hello --group hello --port 80 --processes 4