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.