# Django 5.2.8 documentation

# Så här använder du Django med uWSGI

uWSGI är en snabb, självläkande och utvecklar-/sysadminvänlig applikationscontainerserver kodad i ren C.

Se även

I uWSGI-dokumenten finns en ”tutorial” som täcker Django, nginx och uWSGI (en möjlig distributionsuppsättning av många). Dokumentationen nedan fokuserar på hur man integrerar Django med uWSGI.

## Förkunskapskrav: uWSGI

I uWSGI:s wiki beskrivs flera ”installationsförfaranden”. Med hjälp av pip, Pythons pakethanterare, kan du installera alla uWSGI-versioner med ett enda kommando. Till exempel:

    # Install current stable version.
    $ python -m pip install uwsgi

    # Or install LTS (long term support).
    $ python -m pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz

### uWSGI-modell

uWSGI fungerar enligt en klient-servermodell. Din webbserver (t.ex. nginx, Apache) kommunicerar med en `django-uwsgi` ”worker”-process för att servera dynamiskt innehåll.

### Konfigurera och starta uWSGI-servern för Django

uWSGI stöder flera sätt att konfigurera processen. Se uWSGI:s konfigurationsdokumentation.

Här är ett exempel på ett kommando för att starta en uWSGI-server:

    uwsgi --chdir=/path/to/your/project \
        --module=mysite.wsgi:application \
        --env DJANGO_SETTINGS_MODULE=mysite.settings \
        --master --pidfile=/tmp/project-master.pid \
        --socket=127.0.0.1:49152 \      # can also be a file
        --processes=5 \                 # number of worker processes
        --uid=1000 --gid=2000 \         # if root, uwsgi can drop privileges
        --harakiri=20 \                 # respawn processes taking more than 20 seconds
        --max-requests=5000 \           # respawn processes after serving 5000 requests
        --vacuum \                      # clear environment on exit
        --home=/path/to/virtual/env \   # optional path to a virtual environment
        --daemonize=/var/log/uwsgi/yourproject.log      # background the process

Detta förutsätter att du har ett projektpaket på högsta nivån som heter `mysite` och inom det en modul `mysite/wsgi.py` som innehåller ett WSGI `application`-objekt. Detta är den layout du kommer att ha om du körde `django-admin startproject mysite` (med ditt eget projektnamn i stället för `mysite`) med en ny version av Django. Om den här filen inte finns måste du skapa den. Se Så här distribuerar du med WSGI-dokumentationen för standardinnehållet som du bör lägga till i den här filen och vad du kan lägga till i den.

De Django-specifika alternativen här är:

- `chdir`: Sökvägen till den katalog som måste finnas med på Pythons importväg, dvs. den katalog som innehåller paketet `mysite`.

- `modul`: WSGI-modulen som ska användas – förmodligen modulen `mysite.wsgi` som `startproject` skapar.

- `env`: Bör förmodligen innehålla minst `DJANGO_SETTINGS_MODULE`.

- `home`: Valfri sökväg till projektets virtuella miljö.

Exempel på ini-konfigurationsfil:

    [uwsgi]
    chdir=/path/to/your/project
    module=mysite.wsgi:application
    master=True
    pidfile=/tmp/project-master.pid
    vacuum=True
    max-requests=5000
    daemonize=/var/log/uwsgi/yourproject.log

Exempel på användning av konfigurationsfilen ini:

    uwsgi --ini uwsgi.ini

Åtgärdar `UnicodeEncodeError` för filuppladdningar

Om du får ett `UnicodeEncodeError` när du laddar upp filer med filnamn som innehåller icke-ASCII-tecken, se till att uWSGI är konfigurerad att acceptera icke-ASCII-filnamn genom att lägga till detta i din `uwsgi.ini`:

    env = LANG=en_US.UTF-8

Se avsnittet Filer i Unicode-referensguiden för mer information.

Se uWSGI-dokumenten om hantering av uWSGI-processen för information om hur du startar, stoppar och laddar om uWSGI-arbetarna.