Una volta che avete terminato lo sviluppo di un’applicazione basata su django, è il momento di installarla in produzione. Nel mio caso, ho utilizzato django 1.3.1 e ho scelto di utilizzare Apache e mod_wsgi. Vediamo come fare il deploy passo-passo:
- Fortunatamente mod_wsgi richiede Apache mpm-worker (anziché il meno performante prefork) che su Debian/Ubuntu è facilmente installabile tramite
sudo apt-get install libapache2-mod-wsgi
- Spostiamo l’applicazione sotto un path di sistema, tipo
/usr/share/app
- Aggiungere a /etc/httpd.conf la direttiva
WSGIScriptAlias / /usr/share/app/django.wsgi
dove il primo parametro (/
) rappresenta il path a cui django dovrà rispondere (in questo caso la root), mentre il secondo parametro rappresenta un file che scriveremo nel prossimo step, e che descrive a WSGI come interpretare l’applicazione django che abbiamo scritto - Aprite il file che abbiamo definito al punto precedente (
django.wsgi
) e inserite il seguente codice Python:
“`
import os
import sys
import django.core.handlers.wsgipath = '/usr/share/app'
if path not in sys.path:
sys.path.append(path)os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'
application = django.core.handlers.wsgi.WSGIHandler()
“`Ricordatevi di settare correttamente il path e i settings (che corrisponde al settings.py di django)
- Riavviare apache:
service apache2 restart
Aprite il browser andando a settare l’URL in corrispondenza di quanto definito al punto 1 di questo tutorial (il context-path) e controllate che sia tutto a posto (diversamente, controllate l’error log di Apache).
Una soluzione aggiuntiva sarebbe quella di introdurre un reverse proxy (scelta personale: nginx) davanti ad Apache per servire i files statici (js, css, png, etc.). Ma questo sarà un altro post.