{"title":"Comment déployer avec WSGI","version":"2.2","locale":"fr","docname":"howto/deployment/wsgi/index","url":"/fr/2.2/howto/deployment/wsgi/","canonical":"https://djangodocs.dev/fr/2.2/howto/deployment/wsgi/","summary":"La plate-forme principale de déploiement Django est WSGI , le standard Python pour les serveurs et applications Web. La commande de gestion startproject de Django…","html":"<h1>Comment déployer avec WSGI<a class=\"heading-anchor\" href=\"#how-to-deploy-with-wsgi\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>La plate-forme principale de déploiement Django est <a class=\"reference external\" href=\"https://wsgi.readthedocs.io/en/latest/\">WSGI</a>, le standard Python pour les serveurs et applications Web.</p>\n<p>La commande de gestion <a class=\"reference internal\" href=\"/fr/2.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> 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.</p>\n<p>Django contient de la documentation sommaire pour les serveurs WSGI suivants :</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/2.2/howto/deployment/wsgi/gunicorn/\">Déploiement de Django avec Gunicorn</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/2.2/howto/deployment/wsgi/uwsgi/\">Déploiement de Django avec uWSGI</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/2.2/howto/deployment/wsgi/modwsgi/\">Django avec Apache et <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code></a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/2.2/howto/deployment/wsgi/apache-auth/\">Authentification sur la base de données des utilisateurs de Django depuis Apache</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2>L’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code><a class=\"heading-anchor\" href=\"#the-application-object\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Le concept-clé dans le déploiement avec WSGI est l’objet exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> que le serveur d’applications utilise pour communiquer avec votre code. Ceci est généralement fourni par un objet nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> dans un module Python accessible par le serveur.</p>\n<p>La commande <a class=\"reference internal\" href=\"/fr/2.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> crée un fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_projet&gt;/wsgi.py</span></code> qui contient l’objet exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code>.</p>\n<p>Il est utilisé aussi bien par le serveur de développement de Django que par les déploiements WSGI en production.</p>\n<p>Les serveurs WSGI obtiennent le chemin vers l’exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> à partir de leur configuration. Le serveur intégré à Django, à savoir la commande <a class=\"reference internal\" href=\"/fr/2.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a>, lit cette information à partir du réglage <a class=\"reference internal\" href=\"/fr/2.2/ref/settings/#std-setting-WSGI_APPLICATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">WSGI_APPLICATION</span></code></a>. Par défaut, il est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_du_projet&gt;.wsgi.application</span></code> qui pointe sur l’exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> dans <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;nom_du_projet&gt;/wsgi.py</span></code>.</p>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Configuration du module de réglages (settings)<a class=\"heading-anchor\" href=\"#configuring-the-settings-module\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Lorsque le serveur WSGI charge une application, Django doit importer le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code>, c’est là où se trouve toute la configuration de votre application.</p>\n<p>Django utilise la variable d’environnement <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"/fr/2.2/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> pour trouver le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code> approprié. Il doit contenir le chemin vers le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code> 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.</p>\n<p>Si cette variable n’est pas définie, le fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> par défaut la définit à <code class=\"docutils literal notranslate\"><span class=\"pre\">monsite.settings</span></code>, où <code class=\"docutils literal notranslate\"><span class=\"pre\">monsite</span></code> est le nom de votre projet. C’est comme cela que <a class=\"reference internal\" href=\"/fr/2.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> trouve le fichier de réglages par défaut.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>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.</p>\n<p>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 <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ[&quot;DJANGO_SETTINGS_MODULE&quot;]</span> <span class=\"pre\">=</span> <span class=\"pre\">&quot;monsite.settings&quot;</span></code> dans votre fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code>.</p>\n</aside>\n</section>\n<section id=\"applying-wsgi-middleware\">\n<h2>Application des intergiciels WSGI<a class=\"heading-anchor\" href=\"#applying-wsgi-middleware\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour appliquer un <a class=\"reference external\" href=\"https://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides\">intergiciel WSGI</a>, vous pouvez simplement encapsuler l’objet application. Par exemple, vous pouvez ajoutez ces lignes au bas du fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">helloworld.wsgi</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HelloWorldApplication</span>\n<span class=\"n\">application</span> <span class=\"o\">=</span> <span class=\"n\">HelloWorldApplication</span><span class=\"p\">(</span><span class=\"n\">application</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>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.</p>\n</section>","rootId":"how-to-deploy-with-wsgi","toc":[{"title":"L’objet application","anchor":"the-application-object","children":[]},{"title":"Configuration du module de réglages (settings)","anchor":"configuring-the-settings-module","children":[]},{"title":"Application des intergiciels WSGI","anchor":"applying-wsgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Guides pratiques","url":"/fr/2.2/howto/"},{"docname":"howto/deployment/index","title":"Déploiement de Django","url":"/fr/2.2/howto/deployment/"}],"prev":{"docname":"howto/deployment/index","title":"Déploiement de Django","url":"/fr/2.2/howto/deployment/"},"next":{"docname":"howto/deployment/wsgi/gunicorn","title":"Déploiement de Django avec Gunicorn","url":"/fr/2.2/howto/deployment/wsgi/gunicorn/"},"formats":{"html":"/fr/2.2/howto/deployment/wsgi/","markdown":"/fr/2.2/howto/deployment/wsgi.md","json":"/fr/2.2/howto/deployment/wsgi.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/howto/deployment/wsgi/index.txt","official":"https://docs.djangoproject.com/fr/2.2/howto/deployment/wsgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}