Cómo ejecutar scripts de Python con Apache y mod_wsgi en Ubuntu 20.04

mod_wsgi es un módulo de Apache que proporciona una interfaz para alojar aplicaciones web basadas en Python bajo Apache. Es adecuado para el alojamiento de sitios web de producción de alto rendimiento, así como para tus sitios personales promedio autogestionados que se ejecutan en servicios de alojamiento web. Puedes desplegar fácilmente aplicaciones escritas con marcos y herramientas como Django, Web.py, Werkzug, Chery.py, TurboGears y Flask utilizando mod_wsgi.

En este tutorial, aprenderemos a instalar y configurar el mod_wsgi con el servidor Apache en el servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, es conveniente que actualices tu sistema con la última versión. Puedes actualizar tu sistema con el siguiente comando:

apt-get update -y
apt-get upgrade -y

Después de actualizar el sistema, reinícialo para aplicar los cambios.

Instalar Python

Por defecto, Python viene preinstalado en el servidor Ubuntu 20.04. Si no está instalado, puedes instalarlo con el siguiente comando:

apt-get install python3 libexpat1 -y

Una vez completada la instalación, puedes pasar al siguiente paso.

Instalar Apache y mod_wsgi

A continuación, tendrás que instalar el servidor web Apache y el módulo Python mod_wsgi en tu sistema. Puedes instalarlos ejecutando el siguiente comando:

apt-get install apache2 apache2-utils ssl-cert libapache2-mod-wsgi -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Configurar Apache para mod_wsgi

A continuación, tienes que crear un nuevo script de Python dentro del directorio raíz de la web por defecto de Apache y servirlo a través del módulo de Apache mod_wsgi.

Puedes crearlo con el siguiente comando:

nano /var/www/html/wsgy.py

Añade las siguientes líneas:

def application(environ,start_response):
    status = '200 OK'
    html = 'html>\n' \
           '<body>\n' \
           '<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">\n' \
           'Welcome to mod_wsgi Test Page\n' \
           '</div>\n' \
           '</body>\n' \
           '</html>\n'
    response_header = [('Content-type','text/html')]
    start_response(status,response_header)
    return [html]

Guarda y cierra el archivo. A continuación, cambia la propiedad del archivo a www-data con el siguiente comando

chown www-data:www-data /var/www/html/wsgy.py

A continuación, crea un archivo de configuración del host virtual de Apache para servir este archivo a través del protocolo HTTP.

nano /etc/apache2/conf-available/wsgi.conf

Añade la siguiente línea:

WSGIScriptAlias /wsgi /var/www/html/wsgy.py

Guarda y cierra el archivo. A continuación, activa la configuración de mod-wsgi y reinicia el servicio de Apache con el siguiente comando

a2enconf wsgi
systemctl restart apache2

Probar mod-wsgi

En este punto, el servidor web Apache está configurado para servir tu archivo Python a través del protocolo HTTP.

Para probarlo, abre tu navegador web y escribe la URL http://your-server-ip/wsgi. Deberías ver la página de prueba de mod-wsgi en la siguiente pantalla:

Apache mod_wsgi

Conclusión

Enhorabuena! has desplegado con éxito el script Python sobre el servidor web Apache utilizando el módulo mod_wsgi en el servidor Ubuntu 20.04. Espero que ahora puedas desplegar fácilmente cualquier aplicación Python con Apache y mod_wsgi en el entorno de producción.

También te podría gustar...