# Django 5.2.8 documentation

# 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:

- Så här använder du Django med Gunicorn
- Så här använder du Django med uWSGI
- Så här använder du Django med Apache och `mod_wsgi`
- Hur man autentiserar sig mot Djangos användardatabas från Apache

## 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.