Så här distribuerar du med WSGI¶
Djangos primära distributionsplattform är WSGI, Python-standarden för webbservrar och applikationer.
Djangos hanteringskommando startproject
sätter upp en minimal standardkonfiguration för WSGI åt dig, som du kan justera efter behov för ditt projekt och styra vilken WSGI-kompatibel applikationsserver som helst att använda.
Django innehåller dokumentation för att komma igång med följande WSGI-servrar:
Objektet ``applikation¶
Nyckelbegreppet för att distribuera med WSGI är application
callable som applikationsservern använder för att kommunicera med din kod. Den tillhandahålls vanligen som ett objekt med namnet application
i en Python-modul som är tillgänglig för servern.
Kommandot startproject
skapar en fil <project_name>/wsgi.py
som innehåller en sådan application
callable.
Den används både av Djangos utvecklingsserver och i WSGI-produktionsdistributioner.
WSGI-servrar hämtar sökvägen till application
callable från sin konfiguration. Djangos inbyggda server, nämligen kommandot runserver
, läser den från inställningen WSGI_APPLICATION
. Som standard är den inställd på <project_name>.wsgi.application
, som pekar på anropet application
i <project_name>/wsgi.py
.
Konfigurera inställningsmodulen¶
När WSGI-servern laddar din applikation måste Django importera inställningsmodulen - det är där hela din applikation definieras.
Django använder miljövariabeln DJANGO_SETTINGS_MODULE
för att hitta rätt inställningsmodul. Den måste innehålla den prickade sökvägen till inställningsmodulen. Du kan använda ett annat värde för utveckling och produktion; det beror helt på hur du organiserar dina inställningar.
Om den här variabeln inte är inställd, ställer standard wsgi.py
in den på mysite.settings
, där mysite
är namnet på ditt projekt. Det är så runserver
upptäcker standardinställningsfilen som standard.
Observera
Eftersom miljövariabler är processövergripande fungerar inte detta när du kör flera Django-webbplatser i samma process. Detta händer med mod_wsgi.
För att undvika detta problem, använd mod_wsgis daemonläge med varje webbplats i sin egen daemonprocess, eller åsidosätt värdet från miljön genom att tvinga fram `os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
i din wsgi.py`
.
Tillämpning av WSGI-mellanprogram¶
För att tillämpa WSGI middleware kan du linda in applikationsobjektet. Till exempel kan du lägga till dessa rader längst ner i wsgi.py
:
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)
Du kan också ersätta Djangos WSGI-applikation med en egen WSGI-applikation som senare delegerar till Djangos WSGI-applikation, om du vill kombinera en Django-applikation med en WSGI-applikation från ett annat ramverk.