2012-12-19 27 views
5

Ho lavorato per servire un'app Django da un server Ubuntu. Ho seguito tutte le istruzioni in http://senko.net/en/django-nginx-gunicorn/, ma quando arrivo al passaggio gunicorn_django -b 0.0.0.0:8000, il sito smette improvvisamente di servire file statici. Il sito funziona perfettamente usando il server di sviluppo python manage.py runserver 0.0.0.0:8000.gunicorn non serve file statici

Non ho modificato le impostazioni di stock per nulla. Qualche idea sul perché questo non funziona?

EDIT:

Dopo aver seguito il resto del tutorial e il consiglio di Andrew Gorcester, ho aggiunto un

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

al mio file nginx sites-available, e tutto sembra funzionare!

+0

Giusto per confermare: si avvia sia nginx AND gunicorn, quindi si punta il browser Web sulla porta 80 su localhost (non sulla porta 8000), corretto? –

+0

Non ho affatto nginx in esecuzione. Ricevo il mio sito completo quando ho indicato il mio URL: 8000 quando eseguo il comando 'manage.py'. –

+1

Ok, invierò una risposta per fornire maggiori dettagli. –

risposta

5

Gunicorn non è un server Web di uso generale, tutto ciò che serve è un'applicazione (django in questo caso). E django non serve file statici se non in fase di sviluppo, per la comodità dello sviluppatore, perché non è un veicolo efficiente o necessariamente sicuro per servire file statici.

Se si seguono le istruzioni fino in fondo sarete indirizzati per impostare nginx in esecuzione sulla porta 80, che sarà 1) delega l'applicazione dalla porta 8000 alla porta 80 e 2) servono file statici sulla stessa porta, scegliere quale fare per richiesta in base all'URL.

Non è motivo di allarme che i file statici non funzionino sulla porta 8000: sotto questa configurazione dovrebbero funzionare solo sulla porta 80, una volta che nginx è configurato correttamente. Esistono altre possibili configurazioni per django con altre strategie per servire file statici, sebbene la maggior parte segua la convenzione raccomandata di servire file statici totalmente separati dall'applicazione come in questo caso.

Problemi correlati