---
title: "Comment déployer avec WSGI"
version: 2.1
locale: fr
source: https://docs.djangoproject.com/fr/2.1/howto/deployment/wsgi/
canonical: https://djangodocs.dev/fr/2.1/howto/deployment/wsgi/
---
# Comment déployer avec WSGI

La plate-forme principale de déploiement Django est [WSGI](https://wsgi.readthedocs.io/en/latest/), le standard Python pour les serveurs et applications Web.

La commande de gestion [`startproject`](/fr/2.1/ref/django-admin/#django-admin-startproject) de Django définit par défaut une configuration WSGI simple pour vous, que vous pouvez ensuite adapter aux besoins de votre projet ; cette configuration est alors utilisable par tout serveur d’applications se conformant au standard WSGI.

Django contient de la documentation sommaire pour les serveurs WSGI suivants :

- [Django avec Apache et `mod_wsgi`](/fr/2.1/howto/deployment/wsgi/modwsgi/)
- [Authentification sur la base de données des utilisateurs de Django depuis Apache](/fr/2.1/howto/deployment/wsgi/apache-auth/)
- [Déploiement de Django avec Gunicorn](/fr/2.1/howto/deployment/wsgi/gunicorn/)
- [Déploiement de Django avec uWSGI](/fr/2.1/howto/deployment/wsgi/uwsgi/)

## L’objet `application`

Le concept-clé dans le déploiement avec WSGI est l’objet exécutable `application` que le serveur d’applications utilise pour communiquer avec votre code. Ceci est généralement fourni par un objet nommé `application` dans un module Python accessible par le serveur.

La commande [`startproject`](/fr/2.1/ref/django-admin/#django-admin-startproject) crée un fichier `<nom_de_projet>/wsgi.py` qui contient l’objet exécutable `application`.

Il est utilisé aussi bien par le serveur de développement de Django que par les déploiements WSGI en production.

Les serveurs WSGI obtiennent le chemin vers l’exécutable `application` à partir de leur configuration. Le serveur intégré à Django, à savoir la commande [`runserver`](/fr/2.1/ref/django-admin/#django-admin-runserver), lit cette information à partir du réglage [`WSGI_APPLICATION`](/fr/2.1/ref/settings/#std-setting-WSGI_APPLICATION). Par défaut, il est défini à `<nom_du_projet>.wsgi.application` qui pointe sur l’exécutable `application` dans `<nom_du_projet>/wsgi.py`.

## Configuration du module de réglages (settings)

Lorsque le serveur WSGI charge une application, Django doit importer le module `settings`, c’est là où se trouve toute la configuration de votre application.

Django utilise la variable d’environnement [`DJANGO_SETTINGS_MODULE`](/fr/2.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE) pour trouver le module `settings` approprié. Il doit contenir le chemin vers le module `settings` avec la syntaxe pointée. Il est possible d’utiliser une valeur différente entre le développement et la production ; tout dépend de la façon d’organiser les réglages.

Si cette variable n’est pas définie, le fichier `wsgi.py` par défaut la définit à `monsite.settings`, où `monsite` est le nom de votre projet. C’est comme cela que [`runserver`](/fr/2.1/ref/django-admin/#django-admin-runserver) trouve le fichier de réglages par défaut.

> **Note**
>
> Comme les variables d’environnement s’appliquent à tout un processus, cela ne marche pas lorsque vous exécutez plusieurs sites Django dans le même processus. Ceci peut se produire avec mod\_wsgi.
>
> Pour éviter ce problème, utilisez le mode « daemon » de mod\_wsgi, chaque site ayant son propre processus « daemon », où surchargez la valeur de l’environnement en imposant `os.environ["DJANGO_SETTINGS_MODULE"] = "monsite.settings"` dans votre fichier `wsgi.py`.

## Application des intergiciels WSGI

Pour appliquer un [intergiciel WSGI](https://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides), vous pouvez simplement encapsuler l’objet application. Par exemple, vous pouvez ajoutez ces lignes au bas du fichier `wsgi.py`:

```
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)
```

Vous pourriez aussi remplacer l’application WSGI de Django avec une application WSGI personnalisée qui défère l’application WSGI de Django à plus tard, dans le cas où vous souhaitez combiner une application Django avec une application WSGI d’un autre système applicatif.
