{"title":"Deploy de arquivos estáticos","version":"1.9","locale":"pt-br","docname":"howto/static-files/deployment","url":"/pt-br/1.9/howto/static-files/deployment/","canonical":"https://djangodocs.dev/pt-br/1.9/howto/static-files/deployment/","summary":"O esquama 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/1.9/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/1.9/howto/static-files/\"><span class=\"doc\">Gerenciamento de arquivos estáticos (exemplo: 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 esquama básico para colocar arquivos estáticos em produção é simples: execute o comando <a class=\"reference internal\" href=\"/pt-br/1.9/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/1.9/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/1.9/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/1.9/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ã 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 parece com algo como:</p>\n<ul class=\"simple\">\n<li><p>Suba seu código para o servidor de deploy.</p></li>\n<li><p>No servidor, execute: <a class=\"reference internal\" href=\"/pt-br/1.9/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> para que copie todos os arquivos estáticos para dentro de <a class=\"reference internal\" href=\"/pt-br/1.9/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/1.9/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/1.9/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/1.9/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ê provavelmente irá querer automatizar esse processo, principalmente se você tem múltiplos servidores web. Existem várias maneiras de fazer essa automação, mas uma opção que muitos desenvolvedores Django gostam é o <a class=\"reference external\" href=\"http://fabfile.org/\">Fabric</a>.</p>\n<p>Abaixo, e nas seções seguintes, mostraremos alguns exemplos de “fabfiles” (isto é scripts fabric) que automatizam essas opções para colocar arquivos em produção. A sintaxe de um fabfile é bastante simples más não será coberto aqui; consulte`a documentação do Fabric &lt;<a class=\"reference external\" href=\"http://docs.fabfile.org/\">http://docs.fabfile.org/</a>&gt;`_, para uma explicação completa sobre a sintaxe.</p>\n<p>Então, um fabfile para implantar arquivos estáticos em alguns servidores web pode ser algo como:</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=\"nn\">fabric.api</span> <span class=\"kn\">import</span> <span class=\"o\">*</span>\n\n<span class=\"c1\"># Hosts to deploy onto</span>\nenv<span class=\"o\">.</span>hosts <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">&#39;www1.example.com&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;www2.example.com&#39;</span><span class=\"p\">]</span>\n\n<span class=\"c1\"># Where your project code lives on the server</span>\nenv<span class=\"o\">.</span>project_root <span class=\"o\">=</span> <span class=\"s1\">&#39;/home/www/myproject&#39;</span>\n\n<span class=\"k\">def</span> <span class=\"nf\">deploy_static</span><span class=\"p\">():</span>\n    <span class=\"k\">with</span> cd<span class=\"p\">(</span>env<span class=\"o\">.</span>project_root<span class=\"p\">):</span>\n        run<span class=\"p\">(</span><span class=\"s1\">&#39;./manage.py collectstatic -v0 --noinput&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\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 usqm um servidor Web separado – iesto é, um que nao está servido também um 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=\"http://wiki.nginx.org/Main\">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/1.9/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/1.9/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<p>Aqui está como isso pode parar no fabfile:</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=\"nn\">fabric.api</span> <span class=\"kn\">import</span> <span class=\"o\">*</span>\n<span class=\"kn\">from</span> <span class=\"nn\">fabric.contrib</span> <span class=\"kn\">import</span> project\n\n<span class=\"c1\"># Where the static files get collected locally. Your STATIC_ROOT setting.</span>\nenv<span class=\"o\">.</span>local_static_root <span class=\"o\">=</span> <span class=\"s1\">&#39;/path/to/static&#39;</span>\n\n<span class=\"c1\"># Where the static files should go remotely</span>\nenv<span class=\"o\">.</span>remote_static_root <span class=\"o\">=</span> <span class=\"s1\">&#39;/home/www/static.example.com&#39;</span>\n\n<span class=\"nd\">@roles</span><span class=\"p\">(</span><span class=\"s1\">&#39;static&#39;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span> <span class=\"nf\">deploy_static</span><span class=\"p\">():</span>\n    local<span class=\"p\">(</span><span class=\"s1\">&#39;./manage.py collectstatic&#39;</span><span class=\"p\">)</span>\n    project<span class=\"o\">.</span>rsync_project<span class=\"p\">(</span>\n        remote_dir<span class=\"o\">=</span>env<span class=\"o\">.</span>remote_static_root<span class=\"p\">,</span>\n        local_dir<span class=\"o\">=</span>env<span class=\"o\">.</span>local_static_root<span class=\"p\">,</span>\n        delete<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"serving-static-files-from-a-cloud-service-or-cdn\">\n<span id=\"staticfiles-from-cdn\"></span><h3>Servido arquivos estáticos de um servidor “cloud” 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 um fornecedor de armazenamento na “cloud” como o S3 da Amazom e/ou um CDN (Content delivery network). Isso deixa você ignorar os problemas de servir arquivos estáticos e pode muitas vezes fazer páginas web serem carregads 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/1.9/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/1.9/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/1.9/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 usar isso 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/1.9/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> e seus arquivos estáticos deveriam 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/1.9/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/1.9/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 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/1.9/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/1.9/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":"Servido arquivos estáticos de um servidor “cloud” 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/1.9/howto/"}],"prev":{"docname":"howto/static-files/index","title":"Gerenciamento de arquivos estáticos (exemplo: imagens, JavaScript, CSS)","url":"/pt-br/1.9/howto/static-files/"},"next":{"docname":"howto/windows","title":"Como instalar o Django no Windows","url":"/pt-br/1.9/howto/windows/"},"formats":{"html":"/pt-br/1.9/howto/static-files/deployment/","markdown":"/pt-br/1.9/howto/static-files/deployment.md","json":"/pt-br/1.9/howto/static-files/deployment.json"},"source":"https://github.com/django/django/blob/stable/1.9.x/docs/howto/static-files/deployment.txt","official":"https://docs.djangoproject.com/pt-br/1.9/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","fr","ja","id","pt-br","es"]}