Cargando...

Ejecutar aplicaciones Python en Apache

En este artículo te mostramos como configurar Apache para servir aplicaciones web escritas en Python. Aprenderás como usar Django con Apache y mod_wsgi. Vamos a instalar paso a paso los paquetes necesarios y finalmente configuramos un sitio virtual.

Instalar Python3 en Ubuntu 20.04

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install python3.9 -y

Puedes consultar la versión instalada, ejecutando:

python3 --version

Instalar Apache en Ubuntu 20.04

sudo apt install apache2 -y

Instalar módulo wsgi en Ubuntu 20.04

A continuación, instalamos el módlo de Apache que nos permite alojar y ejecutar cualquier aplicación Python.

sudo apt install libapache2-mod-wsgi-py3 -y

Instalar Django en Ubuntu 20.04

La forma más fácil de instalar Django es usar pip, un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python. Por tanto, vamos a instalar pip.

sudo apt install python3-pip -y

Ahora sí, ya podemos instalar Django en Ubuntu 20.04. Para ello, ejecutamos la siguiente instrucción:

sudo python3 -m pip install Django

instrucción para consultar la versión:

django-admin --version

Configurar Virtual Host en Apache para ejecutar aplicaciones Python

Si estás probando y aún no tienes una aplicación, puedes hacer un clone del repositorio que estoy usando.

git clone https://github.com/frankroot/Django-App /var/www/

Creamos un fichero, en este ejemplo lo nombramos webapp.conf dentro del directorio /etc/apache2/sites-available/ y agregamos la configuración básica que se muestra a continuación:

<VirtualHost *:80>	
        DocumentRoot /var/www/Django-App
        WSGIDaemonProcess Django-App user=www-data group=www-data processes=1 threads=5 python-path= /var/www/Django-App
        WSGIScriptAlias / /var/www/Django-App /djangoapps/wsgi.py
        <Directory /var/www/Django-App >
                WSGIProcessGroup Django-App  
                WSGIApplicationGroup %{GLOBAL}
                Require all granted
        </Directory>
        ErrorLog \${APACHE_LOG_DIR}/djangoapp-error.log
        CustomLog \${APACHE_LOG_DIR}/djangoapp-access.log combined
</VirtualHost>

Lo siguiente sería habilitar el sitio virtual recién creado

sudo a2ensite webapp.conf

Deshabilitamos el sitio virtual que viene por omisión en Apache

sudo a2dissite 000-default.conf

Finalmente, reiniciamos el servicio

sudo service apache2 restart

Bien, tenemos lista la configuración básica, comentaré brevemente las directivas más relevantes.

Con la directiva WSGIDaemonProcess se configuran las características del proceso que ejecutará las aplicaciones. Se le agrega un nombre (en este caso Django-App), se define el usuario y grupo, le indicamos que vamos a tener un proceso con 5 hilos para procesar las peticiones, y finalmente el directorio donde está ubicada la aplicación.

Con la directiva WSGIScriptAlias le indicamos que todas las peticiones que lleguen al Virtual Host, se redirijan al punto de entrada, el fichero wsgi.py, el encargado de gestionar todas las peticiones.

En la configuración del directorio que corresponde al DocumentRoot le asociamos el proceso que hemos definido antes (Django-App).

Finalmente, con WSGIApplicationGroup establecemos a que grupo de aplicaciones pertenece la aplicación wsgi, el valor GLOBAL significa que está en el grupo por omisión.

Puedes consultar configuración mod_wsgi para conocer más sobre las directivas del módulo wsgi.

¿Quieres automatizar este proceso de configuración? Puedes consultar entorno de desarrollo Python con Vagrant.

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.