Afin de servir des fichiers statiques, comme Jamie Hewland dit normalement on route toutes les demandes vers /static/ en utilisant Nginx
location /static/ {
alias /path/to/static/files;
}
![Nginx + Gunicorn + Django]()
En d'autres termes, et comme coreyward dit à propos de Gunicorn / Unicorn
n'a pas été conçue pour résoudre l'ensemble des problèmes liés au service fichiers aux clients
Le même raisonnement s'applique si vous considérez un autre serveur WSGI comme uWSGI au lieu de Gunicorn. Sur Documentation uWSGI
il est inefficace de servir des fichiers statiques via uWSGI. Au lieu de cela, servez-les directement depuis Nginx et contournez complètement uWSGI.
Le moyen le plus simple est de servir vos fichiers statiques avec Python en utilisant WhiteNoise qui est très facile à configurer (vous pouvez utiliser un CDN pour que la plupart des requêtes n'atteignent pas l'application Python). Comme Miguel de Matos dit vous n'avez qu'à
-
Collecte statique
python manage.py collectstatic
-
Installation de whitenoise
pip install whitenoise
-
Ajoutez ce qui suit STATICFILES_STORAGE
dans settings.py
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
-
Ajoutez les éléments suivants à votre MIDDLEWARE
dans settings.py (en tant que mracette note, "Selon la documentation de whitenoise, vous devriez placer le middleware après django.middleware.security.SecurityMiddleware
")
`MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
...
]