Crear aplicación web Django en Server Apache usando WSGI - rmeruane/CC5402-TierraAdentro GitHub Wiki
Previamente a seguir los pasos de esta página, se debe instalar el software necesario descrito en Instalación en Servidor
Subir aplicación web al servidor, y luego ejecutar el siguiente comando:
$ python manage.py collectstatic
Ingresar a Webmin
Click en Servers en menú de la izquierda
Click en Apache Webserver en menú de la izquierda
Click en Create virtual host en pestañas
En Document Root se escribe la ruta donde estará la aplicación. En este caso pusimos "/home/tierra-adentro/public_html/prueba01"
En Server Name se escribe la dirección del host donde estará publicada la aplicación. En nuestro caso pusimos "prueba01.tierra-adentro.hf.cl"
Click en Create Now
Luego, click en Apply Changes (para reiniciar el servidor)
Volvemos a la pestaña de Apache Webserver
Hacer click en el ícono de la aplicación creada
Click en Edit Directives
Dentro de <Directory "/home/tierra-adentro/public_html/iteracion1" > agregar lo siguiente:
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
Luego, copiar el siguiente código al final de las directivas del sitio
WSGIScriptAlias / /home/tierra-adentro/public_html/iteracion1/mapu/ta/ta/wsgi.py
alias /static /home/tierra-adentro/public_html/iteracion1/mapu/ta/static
<Directory "/home/tierra-adentro/public_html/iteracion1/mapu/ta/static">
Order deny,allow
Allow from all
</Directory>
Finalmente, las directivas debieran verse del siguiente modo
DocumentRoot /home/tierra-adentro/public_html/iteracion1
ServerName iteracion1.desarrollo.tierra-adentro.cl
<Directory "/home/tierra-adentro/public_html/iteracion1">
allow from all
Options +Indexes
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
WSGIScriptAlias / /home/tierra-adentro/public_html/iteracion1/mapu/ta/ta/wsgi.py
alias /static /home/tierra-adentro/public_html/iteracion1/mapu/ta/static
<Directory "/home/tierra-adentro/public_html/iteracion1/mapu/ta/static">
Order deny,allow
Allow from all
</Directory>
El último paso consiste en agregar el path de la aplicación web a la variable WSGIPythonPath, la cual se encuentra al final del archivo (en caso de que no exista, se debe crear la variable manualmente). En modo standard el path de las aplicaciones de python es compartido por todas las aplicaciones web del servidor:
/etc/apache2/apache2.conf
Para agregar nueva información a esta variable se debe concatenar mediante :, ejemplo de uso:
WSGIPythonPath /home/tierra-adentro/public_html/iteracion1/mapu/ta:/home/tierra-adentro/public_html/iteracion2/mapu/ta
Para evitar problemas cuando hay aplicaciones Django con el mismo nombre en el servidor, se puede utilizar WSGI en modo Daemon. En modo daemon el path de las aplicaciones de python es propio para cada aplicación web.
Se debe agregar al final de las directivas del sitio:
WSGIDaemonProcess iteracion1 processes=1 threads=5 python-path=/home/tierra-adentro/public_html/iteracion1/mapu/ta
<Location />
WSGIProcessGroup iteracion1
WSGIApplicationGroup %{GLOBAL}
</Location>
Al usar WSGI en modo daemon no hay que declarar la variable WSGIPythonPath en /etc/apache2/apache2.conf
Para que estos cambios sean aplicados es necesario resetear apache mediante Webmin haciendo click en Apply changes o en consola mediante:
/etc/init.d/apache2 restart
En caso de querer usar base de datos SQLite3 tanto el archivo de la base de datos como la carpeta padre deben tener permisos de escritura para el usuario www-data (servidor apache).