django: come fare il deploy di un’applicazione su Apache

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.

Leave a Reply