{"title":"Deploy de arquivos estáticos","version":"2.2","locale":"pt-br","docname":"howto/static-files/deployment","url":"/pt-br/2.2/howto/static-files/deployment/","canonical":"https://djangodocs.dev/pt-br/2.2/howto/static-files/deployment/","summary":"O esboço básico para colocar arquivos estáticos em produção é simples: execute o comando collectstatic quando houver mudanças nos arquivos estáticos, então…","html":"<h1>Deploy de arquivos estáticos<a class=\"heading-anchor\" href=\"#deploying-static-files\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Ver também</p>\n<p>Para uma introdução ao uso de <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.staticfiles</code></a>, veja <a class=\"reference internal\" href=\"/pt-br/2.2/howto/static-files/\"><span class=\"doc\">Gerenciamento de arquivos estáticos (ex.: imagens, JavaScript, CSS)</span></a>.</p>\n</aside>\n<section id=\"serving-static-files-in-production\">\n<span id=\"staticfiles-production\"></span><h2>Servindo arquivos estáticos em produção<a class=\"heading-anchor\" href=\"#serving-static-files-in-production\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O esboço básico para colocar arquivos estáticos em produção é simples: execute o comando <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> quando houver mudanças nos arquivos estáticos, então faça os arranjos para que o diretório de arquivos estáticos (<a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a>) seja movido para o servidor de arquivos estátios e o sirva. Dependendo do <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a>, os arquivos talvez precisem ser movidos manualmente para um novo local ou o método <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.StaticFilesStorage.post_process\" title=\"django.contrib.staticfiles.storage.StaticFilesStorage.post_process\"><code class=\"xref py py-func docutils literal notranslate\">post_process</code></a> da classe <code class=\"docutils literal notranslate\">Storage</code> talvez o faça.</p>\n<p>Claro, como todas as tarefas de implantação, os problemas estão nos detalhes. Cada configuração de produção será um pouco diferente, então você irá precisar adaptar o esquema básico para atender suas necessidades. Abaixo estão alguns padrões que podem ajudar.</p>\n<section id=\"serving-the-site-and-your-static-files-from-the-same-server\">\n<h3>Servindo o site e os arquivos estáticos de um mesmo servidor.<a class=\"heading-anchor\" href=\"#serving-the-site-and-your-static-files-from-the-same-server\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você quer servir arquivos estáticos do mesmo servidor que já está servindo seu site , o processo talvez se pareça com algo como:</p>\n<ul class=\"simple\">\n<li><p>Envie seu código para o servidor de deploy.</p></li>\n<li><p>No servidor, execute: <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> para copiar todos os arquivos estáticos para dentro de <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a>.</p></li>\n<li><p>Configure seu servidor Web para servir seus arquivos em <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a> sob a URL <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a>. Por exemplo, aqui <a class=\"reference internal\" href=\"/pt-br/2.2/howto/deployment/wsgi/modwsgi/#serving-files\"><span class=\"std std-ref\">como fazer isso com Apache e mod_wsgi</span></a>.</p></li>\n</ul>\n<p>Você irá provavelmente querer automatizar o processo, especialmente se você possuir múltiplos servidores web.</p>\n</section>\n<section id=\"serving-static-files-from-a-dedicated-server\">\n<h3>Servindo arquivos estáticos atráves de um servidor dedicado<a class=\"heading-anchor\" href=\"#serving-static-files-from-a-dedicated-server\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>A maioria dos grandes sites Django usa um servidor Web separado – isto é, um que não está servindo também o Django – para servir arquivos estáticos. Este servidor roda um tipo diferente de servidor web – mais rápido mas sem tantas funcionalidades. Algums opções são:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference external\" href=\"https://nginx.org/en/\">Nginx</a></p></li>\n<li><p>Uma versão mais enxuta do <a class=\"reference external\" href=\"https://httpd.apache.org/\">Apache</a></p></li>\n</ul>\n<p>A configuração destes servidores estão fora do escopo deste documento; verifique a respectiva documentação de cada um para instruções.</p>\n<p>Já que seu servidor de arquivos estáticos não irão rodar um Django, você irá precisar modificar a estratégia para algo como:</p>\n<ul class=\"simple\">\n<li><p>Quando seus arquivos estáticos mudarem, execute <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a>  localmente.</p></li>\n<li><p>Coloque seu  <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a> local no servidor de arquivo estático dentro do diretório que esta sendo servido. O  <a class=\"reference external\" href=\"https://rsync.samba.org/\">rsync</a> é uma opção comum para este passo já que ele precisa transferir somente as partes dos arquivos estáticos quesofreram mudanças.</p></li>\n</ul>\n</section>\n<section id=\"serving-static-files-from-a-cloud-service-or-cdn\">\n<span id=\"staticfiles-from-cdn\"></span><h3>Servindo arquivos estáticos de um serviço em nuvem ou CDN<a class=\"heading-anchor\" href=\"#serving-static-files-from-a-cloud-service-or-cdn\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Uma outra tática comum é servir arquivos estáticos de provedores de armazenamento em nuvem como o S3 da Amazom e/ou um CDN (Rede de distribuição de conteúdo). Isso deixa você ignorar os problemas de servir arquivos estáticos e pode muitas vezes fazer páginas web serem carregadas mais rapidamente (especialmente quando em uma CDN).</p>\n<p>Quando usar estes serviços, o processo básico será parecido como o acima, exceto que no lugar de usar o <code class=\"docutils literal notranslate\">rsync</code> para transferir seus arquivos estáticos para o servidor, você irá precisa transferir os arquivos estáticos para fornecedor do armazenamento ou CDN.</p>\n<p>Existem inúmeras maneiras para fazer isso, mas se o provedor tem uma API um <a class=\"reference internal\" href=\"/pt-br/2.2/howto/custom-file-storage/\"><span class=\"doc\">um backend personalizado para armazenamento de arquivo</span></a> fará o processo incrivelmente simples. Se você escreveu ou está usando um “backend” de armazenamento personalizado de terceiros, você pode avisar o <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> para usá-lo definido <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a> para o mecanismo de armazenamento.</p>\n<p>Por exemplo, se você escreveu um backend de armazenamento para o S3 em <code class=\"docutils literal notranslate\">myproject.storage.S3Storage</code> você poderia ele com:</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>STATICFILES_STORAGE <span class=\"o\">=</span> <span class=\"s1\">&#39;myproject.storage.S3Storage&#39;</span>\n</code></pre></div>\n<p>Uma vez isso feito, tudo que tem a fazer é executar <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> e seus arquivos estáticos devem ser então colocados através do seu pacote de armazenamento no S3. Se você mais tarde precisar trocar para um provedor de armazenamento diferente, isso deveria ser tão fácil quando alterar suas configurações no <a class=\"reference internal\" href=\"/pt-br/2.2/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a>.</p>\n<p>Para detalhes sobre como escrever um destes backends, veja <a class=\"reference internal\" href=\"/pt-br/2.2/howto/custom-file-storage/\"><span class=\"doc\">Escrevendo um sistema de armazenamento personalizado</span></a>. Existem aplicações de terceiros disponíveis que fornecem backends de armazenamento para muitas APIs comuns de armazenamento comuns. Um bom começo é uma  <a class=\"reference external\" href=\"https://www.djangopackages.com/grids/g/storage-backends/\">olhada geral no djangopackages.com</a>.</p>\n</section>\n</section>\n<section id=\"learn-more\">\n<h2>Aprenda mais<a class=\"heading-anchor\" href=\"#learn-more\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Para detalhes completos sobre todas as configurações, comandos, tags de templates, e outras partes incluidas em <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.staticfiles</code></a>, veja  <a class=\"reference internal\" href=\"/pt-br/2.2/ref/contrib/staticfiles/\"><span class=\"doc\">a referencia de arquivos estáticos</span></a>.</p>\n</section>","rootId":"deploying-static-files","toc":[{"title":"Servindo arquivos estáticos em produção","anchor":"serving-static-files-in-production","children":[{"title":"Servindo o site e os arquivos estáticos de um mesmo servidor.","anchor":"serving-the-site-and-your-static-files-from-the-same-server","children":[]},{"title":"Servindo arquivos estáticos atráves de um servidor dedicado","anchor":"serving-static-files-from-a-dedicated-server","children":[]},{"title":"Servindo arquivos estáticos de um serviço em nuvem ou CDN","anchor":"serving-static-files-from-a-cloud-service-or-cdn","children":[]}]},{"title":"Aprenda mais","anchor":"learn-more","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Guias de “como fazer”","url":"/pt-br/2.2/howto/"},{"docname":"howto/deployment/index","title":"Fazendo deploy do Django","url":"/pt-br/2.2/howto/deployment/"}],"prev":{"docname":"howto/deployment/wsgi/apache-auth","title":"Autenticação do banco de dados de usuário do Django vindo do Apache.","url":"/pt-br/2.2/howto/deployment/wsgi/apache-auth/"},"next":{"docname":"howto/error-reporting","title":"Relatório de erro","url":"/pt-br/2.2/howto/error-reporting/"},"formats":{"html":"/pt-br/2.2/howto/static-files/deployment/","markdown":"/pt-br/2.2/howto/static-files/deployment.md","json":"/pt-br/2.2/howto/static-files/deployment.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/howto/static-files/deployment.txt","official":"https://docs.djangoproject.com/pt-br/2.2/howto/static-files/deployment/","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"]}