Come distribuire con WSGI.

La piattaforma primaria di deploy di Django è WSGI, lo standard Python per web server ed applicazioni.

Il comando di gestione di Django startproject imposta una configurazione WSGI di default minima per te, che puoi mettere a punto a seconda di quel necessita il progetto e fare in modo che ogni server di applicazione WSGI compliant la usi.

Django comprende la documentazione per iniziare con i seguenti server WSGI:

L’oggetto application

Il concetto chiave del deploy con WSGI è l”application richiamabile che il server dell’applicazione usa per comunicare con il tuo codice. Comunemente è fornita come un oggetto di nome application in un modulo Python accessibile al server.

Il comando startproject crea un file <project_name>/wsgi.py che contiene tale application richiamabile.

E” utilizzato sia da server di sviluppo Django sia da server di produzione WSGI.

I server WSGI ottengono il percorso all”application chiamabile dalla loro configurazione. Il server built-in di Django, cioè il comando runserver, lo legge dall’impostazione WSGI_APPLICATION. Di norma, è impostato a <project_name>.wsgi.application, che punta all”application callable in <project_name>/wsgi.py.

Configura il modulo settings

Quando il server WSGI carica la tua applicazione, Django ha bisogno di importare il modulo settings - che è il posto dove la tua intera applicazione è definita.

Django usa la variabile d’ambiente envvar:DJANGO_SETTINGS_MODULE  per trovare il modulo di impostazioni appropriato. Deve contenere il percorso puntato al modulo delle impostazioni. Puoi usare valori diversi per lo sviluppo e la produzione; dipende tutto da come organizzi le tue impostazioni.

Se questa variabile non è impostata, il file predefinito wsgi.py lo imposta a mysite.settings, dove mysite è il nome del tuo progetto. Ecco come di norma runserver scopre il file delle impostazioni predefinite.

Nota

Dal momento che le variabili d’ambiente sono process-wide, questo non funziona quando fai girare più siti Django nello stesso processo. Questo accade con mod_wsgi.

Per evitare questo problema, usa la modalità demone di mod_wsgi con ogni sito nel proprio processo demone o sovrascrivi il valore dall’ambiente forzando os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" nel tuo wsgi.py.

Applicare il middleware WSGI

Per applicare il middleware WSGI puoi includere l’application object. Per esempio, potresti aggiungere queste linee alla fine di wsgi.py:

from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)

Puoi anche sostituire l’applicazione Django WSGI con un’applicazione WSGI personalizzata che deleghi successivamente all’applicazione Django WSGI, se desideri combinare un’applicazione Django con un’applicazione WSGI di un altro framework.

Back to Top