{"title":"Como implementar com WSGI","version":"6.1","locale":"pt-br","docname":"howto/deployment/wsgi/index","url":"/pt-br/6.1/howto/deployment/wsgi/","canonical":"https://djangodocs.dev/pt-br/6.1/howto/deployment/wsgi/","summary":"A principal plataforma de deploy do Django é WSGI , o padrão Python para servidores web e aplicações. Django’s startproject management command sets up a minimal…","html":"<h1>Como implementar com WSGI<a class=\"heading-anchor\" href=\"#how-to-deploy-with-wsgi\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>A principal plataforma de deploy do Django é <a class=\"reference external\" href=\"https://wsgi.readthedocs.io/en/latest/\">WSGI</a>, o padrão Python para servidores web e aplicações.</p>\n<p>Django’s <a class=\"reference internal\" href=\"/pt-br/6.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> management command sets up a minimal default\nWSGI configuration for you, which you can tweak as needed for your project,\nand direct any WSGI-compliant application server to use.</p>\n<p>O Django inclui documentação básica para os seguintes servidores WSGI:</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.1/howto/deployment/wsgi/granian/\">How to use Django with Granian</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.1/howto/deployment/wsgi/gunicorn/\">Como usar o Django com o Gunicorn</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.1/howto/deployment/wsgi/uwsgi/\">Como usar Django com uWSGI</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.1/howto/deployment/wsgi/modwsgi/\">Como usar o Django com Apache e <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code></a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.1/howto/deployment/wsgi/apache-auth/\">How to authenticate against Django’s user database from Apache</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2>O objeto <code class=\"docutils literal notranslate\"><span class=\"pre\">Application</span></code><a class=\"heading-anchor\" href=\"#the-application-object\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O conceito chave para implantação com WSGI é o executável <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> o qual o servidor de aplicação usa para se comunicar com seu código. Isso é comumente fornecido como um objeto chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> em um módulo Python acessível ao servidor.</p>\n<p>O comando <a class=\"reference internal\" href=\"/pt-br/6.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> cria um arquivo  <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code> que contém a tal <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> executável.</p>\n<p>Ele é usado tanto para o servidor de desenvolvimento do Django quanto para a implantação WSGI para produção.</p>\n<p>Servidores WSGI obtém o caminho para o executável da <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> da sua configuração. O servidor embutido do Django, comando denominado <a class=\"reference internal\" href=\"/pt-br/6.1/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a>, lê isso da definição <a class=\"reference internal\" href=\"/pt-br/6.1/ref/settings/#std-setting-WSGI_APPLICATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">WSGI_APPLICATION</span></code></a>. Por padrão, está definido como  <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;.wsgi.application</span></code>, o que aponta para o executável de <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> no  <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code>.</p>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Configurando o módulo de definições.<a class=\"heading-anchor\" href=\"#configuring-the-settings-module\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>QUando o servidor WSGI carrega sua aplicação, o Django precisa importar o módulo de definições que é onde toda a sua aplicação é definida.</p>\n<p>O Django usa a variável de ambiente <span class=\"target\" id=\"index-3\"></span><a class=\"reference internal\" href=\"/pt-br/6.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> para localizar o módulo de definições apropriado. Este deve conter um caminho pontuado para o módulo de definições. Você pode usar um valor diferente para desenvolvimento e produção; Tudo depende de como você organiza suas definições.</p>\n<p>Se essa variáve não está setada, o padrão <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> define isso como <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code>, onde <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> é o nome do seu projeto. Assim é o padrão de como o <a class=\"reference internal\" href=\"/pt-br/6.1/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> descobre o arquivo de definições padrão.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>Uma vez que as variáveis de ambiente são para todo o processo, isso não funciona quando você executa múltiplos Django sites  no mesmo processo. Isso acontece com mod_wsgi.</p>\n<p>Para evitar este problema, use o daemon do mod_wsgi com cada site em seu próprio processo, ou substitua  o valor do ambiente forçando <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ[&quot;DJANGO_SETTINGS_MODULE&quot;]</span> <span class=\"pre\">=</span> <span class=\"pre\">&quot;mysite.settings&quot;</span></code> no seu <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>Aplicando o middleware WSGI<a class=\"heading-anchor\" href=\"#applying-wsgi-middleware\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>To apply <span class=\"target\" id=\"index-1\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/#middleware-components-that-play-both-sides\"><strong>WSGI middleware</strong></a> you can wrap the application\nobject. For instance you could add these lines at the bottom of\n<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\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>Poderia também substituir a aplicação WSGI Django por uma aplicação WSGI que mais tarde delega à aplicação WSGI Django, se quiser combinar uma aplicação Django com uma aplicação WSGI de um outro framework.</p>\n</section>","rootId":"how-to-deploy-with-wsgi","toc":[{"title":"O objeto Application","anchor":"the-application-object","children":[]},{"title":"Configurando o módulo de definições.","anchor":"configuring-the-settings-module","children":[]},{"title":"Aplicando o middleware WSGI","anchor":"applying-wsgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to guides","url":"/pt-br/6.1/howto/"},{"docname":"howto/deployment/index","title":"How to deploy Django","url":"/pt-br/6.1/howto/deployment/"}],"prev":{"docname":"howto/deployment/index","title":"How to deploy Django","url":"/pt-br/6.1/howto/deployment/"},"next":{"docname":"howto/deployment/wsgi/granian","title":"How to use Django with Granian","url":"/pt-br/6.1/howto/deployment/wsgi/granian/"},"formats":{"html":"/pt-br/6.1/howto/deployment/wsgi/","markdown":"/pt-br/6.1/howto/deployment/wsgi.md","json":"/pt-br/6.1/howto/deployment/wsgi.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/howto/deployment/wsgi/index.txt","official":"https://docs.djangoproject.com/pt-br/6.1/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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}