# documentação Django 2.0.8

# Deploy de arquivos estáticos

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 estáticos em produção

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 faça os arranjos para que o diretório de arquivos estáticos (`STATIC_ROOT`) seja movido para o servidor de arquivos estátios e o sirva. Dependendo do `STATICFILES_STORAGE`, os arquivos talvez precisem ser movidos manualmente para um novo local ou o método `post_process` da classe `Storage` talvez o faça.

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.

### Servindo o site e os arquivos estáticos de um mesmo servidor.

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:

- Envie seu código para o servidor de deploy.
- No servidor, execute: `collectstatic` para copiar todos os arquivos estáticos para dentro de `STATIC_ROOT`.
- Configure seu servidor Web para servir seus arquivos em `STATIC_ROOT` sob a URL `STATIC_URL`. Por exemplo, aqui como fazer isso com Apache e mod_wsgi.

You’ll probably want to automate this process, especially if you’ve got multiple web servers.

### Servindo arquivos estáticos atráves de um servidor dedicado

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:

- Nginx
- Uma versão mais enxuta do Apache

A configuração destes servidores estão fora do escopo deste documento; verifique a respectiva documentação de cada um para instruções.

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:

- Quando seus arquivos estáticos mudarem, execute `collectstatic` localmente.
- Coloque seu `STATIC_ROOT` local no servidor de arquivo estático dentro do diretório que esta sendo servido. O rsync é uma opção comum para este passo já que ele precisa transferir somente as partes dos arquivos estáticos quesofreram mudanças.

### Servindo arquivos estáticos de um serviço em nuvem ou CDN

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).

Quando usar estes serviços, o processo básico será parecido como o acima, exceto que no lugar de usar o `rsync` para transferir seus arquivos estáticos para o servidor, você irá precisa transferir os arquivos estáticos para fornecedor do armazenamento ou CDN.

Existem inúmeras maneiras para fazer isso, mas se o provedor tem uma API um um backend personalizado para armazenamento de arquivo fará o processo incrivelmente simples. Se você escreveu ou está usando um “backend” de armazenamento personalizado de terceiros, você pode avisar o `collectstatic` para usá-lo definido `STATICFILES_STORAGE` para o mecanismo de armazenamento.

Por exemplo, se você escreveu um backend de armazenamento para o S3 em `myproject.storage.S3Storage` você poderia ele com:

    STATICFILES_STORAGE = 'myproject.storage.S3Storage'

Uma vez isso feito, tudo que tem a fazer é executar `collectstatic` 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 `STATICFILES_STORAGE`.

For details on how you’d write one of these backends, see Escrevendo um sistema de armazenamento personalizado. There are 3rd party apps available that provide storage backends for many common file storage APIs. A good starting point is the overview at djangopackages.org.

## Aprenda mais

Para detalhes completos sobre todas as configurações, comandos, tags de templates, e outras partes incluidas em `django.contrib.staticfiles`, veja a referencia de arquivos estáticos.