# Documentazione Django 5.2.8

# Come distribuire Django

Django è pieno di scorciatoie per rendere più semplice la vita degli sviluppatori ma questi strumenti sono inutili se non puoi fare facilmente deploy dei tuoi siti. Dall’avvento di Django, la facilità di deploy è stato un obiettivo fondamentale.

Ci sono molte opzioni per fare deploy della tua applicazione Django, basate sulle tue architetture o i tuoi bisogni di business, ma questa discussione va oltre lo scopo di quel che Django può darti in termini di guida.

Django, being a web framework, needs a web server in order to operate. And since most web servers don’t natively speak Python, we need an interface to make that communication happen. The `runserver` command starts a lightweight development server, which is not suitable for production.

Django attualmente supporta due interfacce: WSGI e ASGI.

- WSGI`_ è lo standard Python per la comunicazione tra web server ed applicazioni ma supporta solo codice sincrono.

- ASGI è il nuovo standard asyncronous-friendly che permetterà al tuo sito Django di usare le feature asincrone di Python e le caratteristiche asincrone di Django man mano che vengono sviluppate.

Dovresti anche considerare a come gestirai i file statici per la tua applicazione e come gestirai il report degli errori.

Infine, prima che tu faccia deploy della tua applicazione in produzione, dovresti scorrere la nostra checklist di deployment per assicuranti che le tue configurazioni siano idonee.

- Come distribuire con WSGI.
  - Come installare Django con Gunicorn
  - Come usare Django con uWSGI
  - Come usare Django con Apache e `mod_wsgi`
  - Come autenticare da Apache verso il database utenti di Django
  - L’oggetto `application`
  - Configura il modulo settings
  - Applicare il middleware WSGI
- Come distribuire con ASGI.
  - Come usare Django con Daphne
  - Come utilizzare Django con Hypercorn
  - Come utilizzare Django con Uvicorn
  - L’oggetto `application`
  - Configura il modulo settings
  - Caricare il middleware ASGI
- Lista dei controlli per la distribuzione
  - Lancia `manage.py check --deploy`
  - Switch away from `manage.py runserver`
  - Configurazioni critiche
  - Configurazione dipendente dall’ambiente
  - HTTPS
  - Ottimizzazione delle prestazioni
  - Segnalazione errore