En este capítulo explicaremos cómo desplegar aplicaciones Django en apache usando mod_wsgi. Mod_python no se recomienda, en versiones próximas de Django no va a estar soportado. Tomaremos como referencia el sistema Ubuntu para explicar este capítulo, para otras distribuciones solo cambia la gestión de paquetes y directorios.
En este capítulo explicaremos cómo desplegar aplicaciones Django en apache usando mod_wsgi. Mod_python no se recomienda, en versiones próximas de Django no va a estar soportado. Tomaremos como referencia el sistema Ubuntu para explicar este capítulo, para otras distribuciones solo cambia la gestión de paquetes y directorios.
1. El primer paso es instalar apache y mod_wsgi.
sudo apt-get install apache2 libapache2-mod-wsgi
2. Habilitamos el módulo wsgi y reiniciamos el Apache
sudo a2enmod wsgi && sudo service apache restart
3. Creamos el directorio de nuestro proyecto Django, en este caso lo colocaremos en /opt/mi_proyecto.
4. Creamos el archivo en el que incluiremos la configuración de nuestro virtualhost, si su versión de apache es actual, el fichero debe terminar con extencion .conf.
sudo nano /etc/apache2/sites-available/django
5. Luego adicionamos lo siguiente
# Definimos el directorio del proyecto al python path. WSGIPythonPath /opt/mi_proyecto #Puerto por el que escuchará el apache. listen 8000 # Creamos el virtualhost. <virtualhost :8000=""> ServerAdmin webmaster@localhost # Alias de la dirección del archivo donde está la aplicación wsgi WSGIScriptAlias / /opt/mi_proyecto/aplicación_principal/wsgi.py # Alias de los directorios estáticos y de multimedia. Alias /static/ /opt/mi_proyecto/static/ Alias /media/ /opt/mi_proyecto/media/ # Establecemos los permisos para el wsgi.py. <directory mi_proyecto="" n_principal="" opt=""> <files wsgi.py=""> Order deny,allow # Si usan Apache 2.4 comentar Allow from all # Si usan Apache 2.4 comenten #Required all granted # Si usan Apache 2.4 descomentar </files> </directory> # Establecemos los permisos para directorio static <directory mi_proyecto="" opt="" static=""> Order deny,allow # Si usan Apache 2.4 comentar Allow from all # Si usan Apache 2.4 comenten #Required all granted # Si usan Apache 2.4 descomentar </directory> # Establecemos los permisos para directorio media <directory media="" mi_proyecto="" opt=""> Order deny,allow # Si usan Apache 2.4 comentar Allow from all # Si usan Apache 2.4 comenten #Required all granted # Si usan Apache 2.4 descomentar </directory> # Configuracion para los Log ErrorLog ${APACHE_LOG_DIR}/pyerror.log CustomLog ${APACHE_LOG_DIR}/pyaccess.log combined </virtualhost>
6. Activamos el virtualhost
sudo a2ensite djangoapp && sudo service apache2 restart
Conclusión
De una manera muy sencilla queda publicada nuestra aplicación Django, es válido resaltar que el fichero wsgi.py esta siempre en nuestra aplicación principal del proyecto, a la altura del setting.py.
Anteriormente explicamos 3 de las formas más comunes de desplegar una aplicación Django en la actualidad, existen otras formas que en nuevos artículos explicaré, dentro la que se encuentra el despliegue sobre nginx y no sobre apache, basado en Gunicorn y Supervisord, una solución más segura y robusta que explicaremos detenidamente más adelante.