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:
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
.
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
.
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.
mar 08, 2023