Ver também
Para uma introdução ao uso de django.contrib.staticfiles, veja Gerenciamento de arquivos estáticos (ex.: imagens, JavaScript, CSS).
The basic outline of putting static files into production consists of two
steps: run the collectstatic command when static files change, then
arrange for the collected static files directory (STATIC_ROOT) to be
moved to the static file server and served. Depending on
STATICFILES_STORAGE, files may need to be moved to a new location
manually or the post_process method of
the Storage class might take care of that.
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.
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:
collectstatic para copiar todos os arquivos estáticos para dentro de STATIC_ROOT.STATIC_ROOT sob a URL STATIC_URL. Por exemplo, aqui como fazer isso com Apache e mod_wsgi.Você irá provavelmente querer automatizar o processo, especialmente se você possuir múltiplos servidores web.
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:
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:
collectstatic localmente.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.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.
There’s any number of ways you might do this, but if the provider has an API,
you can use a custom file storage backend
to integrate the CDN with your Django project. If you’ve written or are using a
3rd party custom storage backend, you can tell collectstatic to use
it by setting STATICFILES_STORAGE to the storage engine.
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'
Once that’s done, all you have to do is run collectstatic and your
static files would be pushed through your storage package up to S3. If you
later needed to switch to a different storage provider, you may only have to
change your STATICFILES_STORAGE setting.
Para detalhes sobre como escrever um destes backends, veja Escrevendo um sistema de armazenamento personalizado. Existem aplicações de terceiros disponíveis que fornecem backends de armazenamento para muitas APIs comuns de armazenamento comuns. Um bom começo é uma olhada geral no djangopackages.com.
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.
ago 03, 2020