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.