Bonjour Charlie,

Je vais encore faire un nouvel essai d'explication mais je pense que ton
problème ne vient ni de gunicorn, ni de nginx mais de ta compréhension
du fonctionnement des staticfiles.

En développement Django le fait pour toi il merge dans STATIC_URL les
répertoires /static/ de chaque apps.

En production, tu dois utiliser *STATIC_ROOT* et la commande *python
manage.py collectstatic
*
Nginx va proxifier ton app Django lancée par gunicorn ou uwsgi mais
c'est également lui qui va servir directement les fichiers static.
*
*Pour commencer concentre toi sur servir les staticfiles uniquement.*

*Fait ton collectstatic et *dans ton STATIC_ROOT ajoute un fichier
test.html* (contenant Hello World par exemple)
*
Tant que tu n'arrives pas à le charger avec http://localhost/test.html
ce n'est pas la peine d'aller plus loin.
*
Pour que nginx puisse lire ton fichier il faut que l'utilisateur qui
lance nginx puisse y accèder. Par défaut c'est www-data sur Ubuntu.

Si ton utilisateur est toto

Ce que je te recommande c'est de tout mettre dans
/srv/projects/<ton_project>

De définir STATIC_ROOT comme étant
*/src/projects/<ton_projet>/public/static/*
De définir STATIC_URL comme étant */static/*

Ensuite faire:

  sudo mkdir -p /srv/projects/<ton_project>/public/static
  sudo chown -R toto:www-data /srv/
  sudo find /srv -type d -exec chmod g+rs {} \;

Ensuite tu peux faire ton python manage.py collectstatic

Tu devrais voir tous les fichiers static de ton projet dans
*/src/projects/<ton_projet>/public/static/

*Avec ce genre de droits:*

*-rw-rw-r-- 1 toto www-data 12 août  29 09:41
/srv/projects/django-story/public/statics/test.html

root /srv/projects/<ton_projet>/public/;

location /static/ {
        alias /srv/projects/<ton_projet>/public/static/;
}

En esperant que ça t'aide,

— Rémy

_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à