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.
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.