---
title: "Come usare Django con uWSGI"
version: 5.2
locale: it
source: https://docs.djangoproject.com/it/5.2/howto/deployment/wsgi/uwsgi/
canonical: https://djangodocs.dev/it/5.2/howto/deployment/wsgi/uwsgi/
---
# Come usare Django con uWSGI

[uWSGI](https://uwsgi-docs.readthedocs.io/) è un application server container veloce, autoriparante e developer/sysadmin-friendly programmato in C puro.

> **See also**
>
> Il documento uWSGI offre un [tutorial](https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html) che copre Django, nginx e uWSGI (un possibile setup di deployment tra molti). I documenti qui sotto sono focalizzati su come integrare Django con uWSGI.

## Prerequisiti: uWSGI

Il wiki uWSGI descrive molte [procedure di installazione](https://uwsgi-docs.readthedocs.io/en/latest/Install.html). Usando pip, il package manager di Python, puoi installare qualsiasi versione di uWSGI con un singolo comando. Per esempio:

```console
# 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
```

### modello uWSGI

uWSGI oprera su un modello client-server. Il tuo web server (per es. Apache nginx) comunica con un processo «worker» `django-uwsgi` per servire il contenuto dinamico.

### Configurare ed avviare il server uWSGI per Django

uWSGi supporta diverse modalità di configurazione. Leggi la [configuration documentation](https://uwsgi.readthedocs.io/en/latest/Configuration.html) di uWSGI.

Here’s an example command to start a uWSGI server:

```shell
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
```

Si assume che tu abbia un top-level package denominato «mysite», ed all’interno un modulo :file\`mysitewsgi.py\` contenente un oggetto WSGI `application`. Questo è il layout che si ottiene eseguendo `django-admin startproject mysite` (utilizzando lo specifico nome del tuo progetto al posto di `mysite`) con una versione recente di Django. Nel caso il file non esista, verrà creato. Vedi anche il documento [Come distribuire con WSGI.](/it/5.2/howto/deployment/wsgi/) per i contenuti di default che dovrai inserire in questo file e che cos’altro puoi aggiungere in esso.

Le opzioni specifiche per Django sono qui:

- `chdir`: il percorso alla directory che necessita di essere sul percorso di importazione di Python – cioè, la directory che contiene il package `mysite`.
- `module`: il modulo WSGI da usare – probabilmente il modulo `mysite.wsgi` che [`startproject`](/it/5.2/ref/django-admin/#django-admin-startproject) crea.
- `env`: dovrebbe probabilmente contenere almeno [`DJANGO_SETTINGS_MODULE`](/it/5.2/topics/settings/#envvar-DJANGO_SETTINGS_MODULE).
- `home`: Path opzionale dell’ambiente virtuale del tuo progetto

Example ini configuration file:

```ini
[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
```

Example ini configuration file usage:

```shell
uwsgi --ini uwsgi.ini
```

> **Correggere UnicodeEncodeError per il caricamento di file**
>
> If you get a `UnicodeEncodeError` when uploading files with file names
> that contain non-ASCII characters, make sure uWSGI is configured to accept
> non-ASCII file names by adding this to your `uwsgi.ini`:
>
> ```ini
> env = LANG=en_US.UTF-8
> ```
>
> Vedi la sezione [Files](/it/5.2/ref/unicode/#unicode-files) nella guida di riferimento Unicode per dettagli.

Vedi la documentazione uWSGI su come [gestire il processo uWSGI](https://uwsgi-docs.readthedocs.io/en/latest/Management.html) per informazioni su come avviare, fermare e ricaricare i worker uWSGI.
