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

Répondre à