{"title":"Deploy de arquivos estáticos","version":"1.10","locale":"pt-br","docname":"howto/static-files/deployment","url":"/pt-br/1.10/howto/static-files/deployment/","canonical":"https://djangodocs.dev/pt-br/1.10/howto/static-files/deployment/","summary":"Ver também Para uma introdução ao uso de django.contrib.staticfiles , veja Gerenciamento de arquivos estáticos (ex.: imagens, JavaScript, CSS) . Servindo arquivos…","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\">\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.10/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\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>, veja <a class=\"reference internal\" href=\"/pt-br/1.10/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/1.10/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></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.10/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>) seja movido para o servidor de arquivos estátios e o sirva. Dependendo do <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_STORAGE</span></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.10/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\"><span class=\"pre\">post_process</span></code></a> da classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Storage</span></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/1.10/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a> para copiar todos os arquivos estáticos para dentro de <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>.</p></li>\n<li><p>Configure seu servidor Web para servir seus arquivos em <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a> sob a URL <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a>. Por exemplo, aqui <a class=\"reference internal\" href=\"/pt-br/1.10/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 class=\"reference external\" href=\"http://docs.fabfile.org/\">a documentação do Fabric</a>, 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=\"w\"> </span><span class=\"nn\">fabric.api</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"o\">*</span>\n\n<span class=\"c1\"># Hosts to deploy onto</span>\n<span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">hosts</span> <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>\n<span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">project_root</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;/home/www/myproject&#39;</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">deploy_static</span><span class=\"p\">():</span>\n    <span class=\"k\">with</span> <span class=\"n\">cd</span><span class=\"p\">(</span><span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">project_root</span><span class=\"p\">):</span>\n        <span class=\"n\">run</span><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 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=\"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.10/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a>  localmente.</p></li>\n<li><p>Coloque seu  <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></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 parecer 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=\"w\"> </span><span class=\"nn\">fabric.api</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"o\">*</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">fabric.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">project</span>\n\n<span class=\"c1\"># Where the static files get collected locally. Your STATIC_ROOT setting.</span>\n<span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">local_static_root</span> <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>\n<span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">remote_static_root</span> <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=\"w\"> </span><span class=\"nf\">deploy_static</span><span class=\"p\">():</span>\n    <span class=\"n\">local</span><span class=\"p\">(</span><span class=\"s1\">&#39;./manage.py collectstatic&#39;</span><span class=\"p\">)</span>\n    <span class=\"n\">project</span><span class=\"o\">.</span><span class=\"n\">rsync_project</span><span class=\"p\">(</span>\n        <span class=\"n\">remote_dir</span><span class=\"o\">=</span><span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">remote_static_root</span><span class=\"p\">,</span>\n        <span class=\"n\">local_dir</span><span class=\"o\">=</span><span class=\"n\">env</span><span class=\"o\">.</span><span class=\"n\">local_static_root</span><span class=\"p\">,</span>\n        <span class=\"n\">delete</span><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>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\"><span class=\"pre\">rsync</span></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.10/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.10/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a> para usá-lo definido <a class=\"reference internal\" href=\"/pt-br/1.10/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_STORAGE</span></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\"><span class=\"pre\">myproject.storage.S3Storage</span></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><span class=\"n\">STATICFILES_STORAGE</span> <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.10/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></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/1.10/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_STORAGE</span></code></a>.</p>\n<p>Para detalhes sobre como escrever um destes backends, veja <a class=\"reference internal\" href=\"/pt-br/1.10/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.10/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\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>, veja  <a class=\"reference internal\" href=\"/pt-br/1.10/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/1.10/howto/"}],"prev":{"docname":"howto/static-files/index","title":"Gerenciamento de arquivos estáticos (ex.: imagens, JavaScript, CSS)","url":"/pt-br/1.10/howto/static-files/"},"next":{"docname":"howto/windows","title":"Como instalar o Django no Windows","url":"/pt-br/1.10/howto/windows/"},"formats":{"html":"/pt-br/1.10/howto/static-files/deployment/","markdown":"/pt-br/1.10/howto/static-files/deployment.md","json":"/pt-br/1.10/howto/static-files/deployment.json"},"source":"https://github.com/django/django/blob/stable/1.10.x/docs/howto/static-files/deployment.txt","official":"https://docs.djangoproject.com/pt-br/1.10/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","el","pl"]}