Proyecto de DJANGO a producción con apache

Proyecto de DJANGO a producción con apache

En todo proyecto que realicemos con DJANGO llegará un momento en el que tendremos que pasarlo a producción, y en este caso debemos lo haremos con apache y un mod que se llama wsgi.
Lo primero que hay que hacer es instalar el mod_wsgi de apache, antiguamente se instalaba el mod_python que ya esta descatalogado asi que cualquier cosa (tutorial, afirmación, etc) que haga referencia a ese mod hay que cambiarla por el mod_wsgi.

pasar proyecto django a produccion
sudo aptitude install libapache2-mod-wsgi
o
sudo apt-get install libapache2-mod-wsgi-py3

Realmente lo primero que hay que hacer no es esto, si no quitar el debug en el settings del proyecto, poniéndolo a debug=off, para que no intente mostrarnos los errores ni nada por el estilo, además de esto hay que crear los archivos 404.html y 500.html para que los muestre cuando no encuentre alguna web o exista algún error en la sintaxis de python o cualquier otra cosa.
Depuse de esto continuaremos con la configuración de apache, haciendo que cargue el mod que acabamos de instalar con la sentencia:
LoadModule python_module /usr/lib/apache2/modules/mod_python.so

La cual debemos poner en el archivo de configuración de apache que por defecto estara en la ruta “/etc/apache2/apache2.conf” existe la posibilidad que este a su vez llame a otros archivos de configuración haciendo una llamada tipo esta,
IncludeOptional mods-enabled/*.conf
en este caso debemos asegurarnos que el mod wsgi esta listado en esa carpeta con los dos archivos, el .conf y el .load, si es asi ya solo nos queda reiniciar apache para que pille la configuración nueva.
Ahora volvemos a editar el archivo .conf principal añadiendo esto con nuestra configuración, en el ejemplo esta una configuración de ejemplo, hay que sustituirla por la nuestra.

WSGIScriptAlias / /var/www/html/proyectos/proyecto1/proyecto1/wsgi.py

WSGIPythonPath /var/www/html/proyectos/proyecto1

<Directory /var/www/html/proyectos/proyecto1>

<Files wsgi.py>

Require all granted

</Files>

</Directory>
Se colocará en el raiz / para asegurarnos de que todo funciona bien. Aunque podriamos ponerlo en /proyecto1 y funcionaría igual de bien.
sudo /etc/init.d/apache2 restart
sudo service apache2 restart
Y ahora reiniciamos el servidor apache, con cualquiera de estos dos comandos.
Si todo ha ido bien ya deberíamos ver nuestra pagina web creada con django en el navegador y entregada por el servidor apache en modo de producción, pero seguramente veamos mal las tildes en las palabras que las lleven. Por lo que editaremos el archivo /etc/apache2/envvars y pondremos estas lineas sustituyendo las otras parecidas si las tiene.
export LANG=’en_US.UTF-8′
export LC_ALL=’en_US.UTF-8′
Y otra vez tendremos que reiniciar el servidor apache con los comandos puestos en el paso anterior para que vuelva a coger la nueva configuración.

Deja un comentario