2012-12-19 5 views
5

J'ai travaillé sur le service d'une application Django à partir d'un serveur Ubuntu. J'ai suivi toutes les instructions dans http://senko.net/en/django-nginx-gunicorn/, mais quand j'arrive à l'étape gunicorn_django -b 0.0.0.0:8000, le site cesse soudainement de servir les fichiers statiques. Le site fonctionne très bien en utilisant le serveur de développement python manage.py runserver 0.0.0.0:8000.gunicorn ne sert pas les fichiers statiques

Je n'ai pas modifié les paramètres de stock pour quoi que ce soit. Des idées pour lesquelles cela ne fonctionne pas?

EDIT:

Après avoir suivi le reste du tutoriel et les conseils de Andrew Gorcester, j'ai ajouté un

location /static { 
    root /path/to/static/files; 
} 

à mon dossier nginx sites-available, et tout semble fonctionner!

+0

Juste pour confirmer: vous démarrez nginx ET gunicorn, puis vous pointez votre navigateur Web sur le port 80 sur localhost (pas port 8000), correct? –

+0

Je n'ai pas nginx en cours d'exécution. Je reçois mon site complet lorsque je pointe vers mon URL: 8000 lorsque j'exécute la commande 'manage.py'. –

+1

D'accord, je vais soumettre une réponse pour donner plus de détails. –

Répondre

5

Gunicorn n'est pas un serveur web généraliste, il ne sert qu'une application (django dans ce cas). Et django ne sert pas les fichiers statiques sauf en développement, pour la commodité du développeur, car ce n'est pas un moyen efficace ou nécessairement sécurisé pour servir des fichiers statiques. Si vous suivez les instructions tout au long, vous serez invité à configurer nginx fonctionnant sur le port 80, ce qui: 1) transfèrera votre application du port 8000 au port 80 et 2) servira des fichiers statiques sur le même port, choisir quoi faire par requête en fonction de l'URL.

Il n'est pas alarmant que les fichiers statiques ne fonctionnent pas sur le port 8000 - dans cette configuration, ils ne devraient fonctionner que sur le port 80, une fois que nginx est correctement configuré. Il existe d'autres configurations possibles pour django avec d'autres stratégies pour servir des fichiers statiques, bien que la plupart d'entre elles suivent la convention recommandée de servir des fichiers statiques totalement distincts de l'application comme dans ce cas.

Questions connexes