Home / Blog / Deploy Django over Apache server
Daniel's picture
Daniel M. Fernandez
Comp. Science Engineer
23 Jan 2017
Deploy
Django over Apache server

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.

Body: 

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.

  1. sudo apt-get install apache2 libapache2-mod-wsgi

2. Habilitamos el módulo wsgi y reiniciamos el Apache

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

  1. sudo nano /etc/apache2/sites-available/django

5. Luego adicionamos lo siguiente

  1. # Definimos el directorio del proyecto al python path.
  2. WSGIPythonPath /opt/mi_proyecto
  3.  
  4. #Puerto por el que escuchará el apache.
  5. listen 8000
  6.  
  7. # Creamos el virtualhost.
  8. <virtualhost :8000="">
  9. ServerAdmin webmaster@localhost
  10.  
  11. # Alias de la dirección del archivo donde está la aplicación wsgi
  12. WSGIScriptAlias / /opt/mi_proyecto/aplicación_principal/wsgi.py
  13.  
  14. # Alias de los directorios estáticos y de multimedia.
  15. Alias /static/ /opt/mi_proyecto/static/
  16. Alias /media/ /opt/mi_proyecto/media/
  17.  
  18. # Establecemos los permisos para el wsgi.py.
  19. <directory mi_proyecto="" n_principal="" opt="">
  20. <files wsgi.py="">
  21. Order deny,allow # Si usan Apache 2.4 comentar
  22. Allow from all # Si usan Apache 2.4 comenten
  23. #Required all granted # Si usan Apache 2.4 descomentar
  24. </files>
  25. </directory>
  26.  
  27. # Establecemos los permisos para directorio static
  28. <directory mi_proyecto="" opt="" static="">
  29. Order deny,allow # Si usan Apache 2.4 comentar
  30. Allow from all # Si usan Apache 2.4 comenten
  31. #Required all granted # Si usan Apache 2.4 descomentar
  32. </directory>
  33.  
  34. # Establecemos los permisos para directorio media
  35. <directory media="" mi_proyecto="" opt="">
  36. Order deny,allow # Si usan Apache 2.4 comentar
  37. Allow from all # Si usan Apache 2.4 comenten
  38. #Required all granted # Si usan Apache 2.4 descomentar
  39. </directory>
  40.  
  41. # Configuracion para los Log
  42. ErrorLog ${APACHE_LOG_DIR}/pyerror.log
  43. CustomLog ${APACHE_LOG_DIR}/pyaccess.log combined
  44. </virtualhost>

6. Activamos el virtualhost

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