Una volta 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 usare Apache con mod_wsgi. Vediamo come fare il deploy passo-passo:

  1. Fortunatamente mod_wsgi richiede Apache mpm-worker (anziché il meno performante prefork), installabile su Debian/Ubuntu con:

    sudo apt-get install libapache2-mod-wsgi
    
  2. Spostiamo l’applicazione sotto un percorso di sistema, ad esempio /usr/share/app.

  3. Aggiungere al file di configurazione di Apache (ad es. /etc/apache2/sites-available/myapp.conf) la direttiva:

    WSGIScriptAlias / /usr/share/app/django.wsgi
    

    Il primo parametro (/) rappresenta il path a cui Django dovrà rispondere (in questo caso la root), mentre il secondo parametro è il file WSGI che creeremo nel passo successivo.

  4. Creare il file django.wsgi con il seguente contenuto Python:

    import os
    import sys
    import django.core.handlers.wsgi
    
    path = '/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 impostare correttamente il path e il modulo settings (che corrisponde al file settings.py di Django).

  5. Riavviare Apache:

    service apache2 restart
    

Aprite il browser puntando all’URL definito al punto 3 e controllate che tutto funzioni (diversamente, controllate l’error log di Apache). Una soluzione aggiuntiva è quella di introdurre un reverse proxy (scelta personale: nginx) davanti ad Apache per servire i file statici (js, css, immagini, ecc.). Ma questo sarà argomento di un altro post.