On peut faire beaucop plus simple avec nginx. Plutôt que d'utiliser les alias, regarder try_files.
Avec cette conf : https://gist.github.com/brutasse/122e5b5bb0550a420862 Le root de nginx est /srv/www/monsite/public. Pour Django, il suffit de mettre STATIC_ROOT à /srv/www/monsite/public/static. Le "try files $uri @monsite" fait le reste : si un fichier matche l'URL il est servi directement, sinon c'est gunicorn qui prend la requête. Il suffit d'avoir le STATIC_ROOT correct et de lancer collectstatic. Bruno 2014-08-29 8:36 GMT+02:00 Rémy Hubscher <[email protected]>: > Ah peux tu vérifier les droits d'accès de www-data aux fichiers ? > > sudo su www-data > ls /data/site_django/static/; > > Dans le alias il te faut mettre l'adresse de ton static_root. > > Le 29 août 2014 08:32, "Charlie Gentil" <[email protected]> a > écrit : > >> Bonjour, >> >> Bon ben je bloque franchement ... >> >> J'ai repris ta conf dans nginx.conf mais ai mis les lignes suivantes dans >> location /static/ : >> location /static/ { >> alias >> /usr/lib/python3.4/site-packages/django/contrib/admin/static/; >> } >> >> Histoire d'aller au plus simple. >> J'ai même essayé ceci : >> location /static/admin/css { >> alias >> /usr/lib/python3.4/site-packages/django/contrib/admin/static/admin/css; >> } >> >> J'ai prendre soin de faire un restart de nginx et changer de port pour >> forcer le rafraichissement ... rien n'y fait... :( >> >> C'est c*n ... django + gunicorn + nginx semblait simple sur le papier ... >> >> Bonne journée à tous. >> >> >> >> Le mardi 26 août 2014, 17:20:19 Charlie Gentil a écrit : >> > >> > J'ai suivi ton conseil, refais un simple projet et suivi ta démarche : >> > les commentaires ci-dessous ... >> > >> > Le mardi 26 août 2014, 15:32:54 Olivier Meunier a écrit : >> > >> > > 1. Configurer nginx: >> > > >> > > server { >> > > listen 80; >> > > server_name localhost; >> > > >> > > location / { >> > > proxy_pass http://127.0.0.1:8000/; >> > > proxy_read_timeout 300; >> > > proxy_redirect off; >> > > proxy_buffering off; >> > > proxy_store off; >> > > proxy_set_header Host $host; >> > > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> > > } >> > > >> > > location /static/ { >> > > alias <RACINE_DU_PROJECT>/_static/; >> > > } >> > > } >> > > >> > > Cette conf est la plus simple possible pour faire un reverse de base >> > > et >> > > servir les static comme des static. (L'ordre des directives "location" >> > > n'a aucune importance). >> > OK. J'ai renseigné le fichier conf que j'ai créé dans >> > /etc/nginx/sites-available et dont un lien existe dans >> > /etc/nginx/sites-enabled >> > > 2. Configurer Django: >> > > >> > > STATIC_ROOT = '<RACINE_DU_PROJECT>/_static' >> > > STATIC_URL = '/static/' >> > OK >> > > 3. Collecte >> > > >> > > ./manage.py collectstatic >> > > >> > > Là, vérifie que tu as bien des fichiers dans _static de ton projet. >> > OK, je les ai. Cela me donne donc l'architecture suivante : >> > |monprojet >> > |monprojet >> > |... >> > |_static >> > |admin >> > |manage.py >> > >> > > 3. Lancer le serveur du projet : >> > > ./manage.py runserver --nostatic >> > > >> > > On lui dit de ne pas servir les static pour se mettre dans une >> > > configuration similaire à gunicorn, uwsgi, etc. >> > OK >> > > 4. Aller sur http://localhost/ >> > Si je vais dans http://localhost/ j'ai une erreur 404... normal, je >> > pense que c'est plutôt localhost:8000. Point positif sur cette page erreur >> > j'ai un joli nginx/1.6.1, donc à priori ça fonctionne un peu ;). >> > Malheureusement, si je vais sur http://localhost:8000/admin la mise en >> > page n'est pas faite. >> > >> > Pour info, j'ai aussi rentré les lignes de config directement dans >> > ngixn.conf. ==> même topo. >> > J'ai aussi ajouté un dossier static dans _static et y ai mis une copie >> > d'admin, histoire de tester un peu tout... mais rien n'y fait. >> > >> > Je commence à me demander si je vais pas utiliser le serveur de dev :-@ >> > :( >> > >> > > Si tout ceci fonctionne, tu pourras alors envisager de basculer à >> > > gunicorn ou uwsgi (je conseille gunicorn pour démarrer, c'est plus >> > > simple) >> > > >> > > 5. Exercice bonus: si tu utilises MEDIA_ROOT / MEDIA_URL, ajouter sa >> > > prise en charge dans nginx :) >> > > >> > _______________________________________________ >> > django mailing list >> > [email protected] >> > http://lists.afpy.org/mailman/listinfo/django >> _______________________________________________ >> django mailing list >> [email protected] >> http://lists.afpy.org/mailman/listinfo/django > > > _______________________________________________ > django mailing list > [email protected] > http://lists.afpy.org/mailman/listinfo/django _______________________________________________ django mailing list [email protected] http://lists.afpy.org/mailman/listinfo/django
