2016-02-26 20 views
6

Ho realizzato i progetti per principianti usando manage.py e ora spostato su postgres dopo sqllite. Molti hanno suggerito Gunicorn? Qual è la differenza ?Django: Differenza tra l'utilizzo del server tramite manage.py e altri server come gunicorn ecc. Quale è meglio?

+0

Questo è qualcosa a cui non dovresti pensare molto ora dato che sei molto nuovo. Fai andare il tuo progetto quando sei pronto a spingerlo a vivere, quindi concentrati su questo. Puoi usare Heroku e questo ti permetterebbe comunque di implementare facilmente usando il tuo file manage.py. Buona fortuna a te. –

+4

C'è un avvertimento enorme nei documenti che dicono di non usare runserver per la produzione – Sayse

risposta

15

L'impostazione più comune è nginx e gunicorn. Quindi, prima di parlare di perché gunicorn è consigliato su runserver, Chiariamo subito la differenza tra nginx - perché entrambi sostengono che sono server web :)

Nginx dovrebbe essere il vostro punto di ingresso al pubblico, è il server in ascolto sulla porta 80 (http) e 443 (https). Il motivo principale è il che gestisce le richieste HTTP, che applica i reindirizzamenti, l'autenticazione HTTP se necessario, la gestione dei certificati TSL/SSL e, tra le altre cose, decide dove le tue richieste saranno finalmente disponibili. Per esempio. c'è forse una app node.js che vive su localhost:3000 che attende le richieste su /foo/api mentre gunicorn sta aspettando allo localhost:8000 per servire la tua fantastica app. Questa funzionalità di proxy delle richieste in entrata ai cosiddetti servizi upstream (in questo caso node.js e gunicorn) è chiamata reverse-proxy.

GUNICORN è un server che traduce le richieste HTTP in pitone. Ci sono specifiche per quello chiamato WSGI. La build di Django nel webserver fa lo stesso. manage.py runserver ha come destinazione lo sviluppo (ad es. Riavvio automatico delle modifiche). Gunicorn punta alla produzione. Ha molte funzionalità che mancano nel build nel server. Per esempio. può generare più processi di lavoro per parallelizzare le richieste in entrata a più core CPU, ha una corretta registrazione, è generalmente ottimizzato per la velocità, può essere configurato a gradi molto sottili a seconda della configurazione e viene controllato molto attivamente per problemi di sicurezza.

Ci sono altri web server in competizione con gunicorn, ma gunicorn (originariamente ispirato all'unicorno di ruby) è molto popolare e facile da configurare e quindi non solo un ottimo punto di partenza, ma una soluzione molto professionale che viene utilizzata da progetti molto grandi .

+0

Grazie per la risposta. allora come principiante dovrei svilupparmi sul runserver e spostarmi lentamente verso Gunicorn. :) –

6

manage.py runserver è solo un server di sviluppo, non è destinato alla produzione in nessuna circostanza. Devi usare qualcosa come Apache, uWSGI, NGINX o qualche altro server per servire il tuo progetto django una volta pronto per l'implementazione.

Problemi correlati