2012-05-22 13 views
9

Sto provando a spedire la mia applicazione Web al server e questa è la prima volta che configuro il server. Sto usando l'installazione django-gunicorn-nginx seguendo questo tutorial http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ Prima tutto era perfetto e ho ricevuto la pagina di benvenuto django. Poi ho caricato le applicazioni nel progetto Django e la configurazione della radice statica e ora mi sto 502 gateway È possibile controllare in http://qlimp.comdjango-gunicorn-nginx: 502 gateway errato

Tutto fino alla messa a punto gunicorn e supervisore è lo stesso secondo le indicazioni che esercitazione . Ma ho modificato alcuni nginx conf. Eccolo:

upstream app_server_djangoapp { 
    server localhost:8001 fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name qlimp.com; 

    access_log /var/log/nginx/guni-access.log; 
    error_log /var/log/nginx/guni-error.log info; 

    keepalive_timeout 5; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     if (!-f $request_filename) { 
      proxy_pass http://app_server_djangoapp; 
      break; 
     } 
    } 
    location /files/ { 
     autoindex on; 
     root /home/nirmal/qlimp/qlimp/files/; 
    } 
} 

Ecco il mio url media:

MEDIA_URL = '/files/' 

Files è la cartella in cui sto avendo tutti i file statici. Come posso far funzionare il mio progetto nel server? Qualcuno potrebbe guidarmi?

UPDATE

errors.log https://gist.github.com/2768425

Grazie!

+0

502 significa in sostanza che nginx non riesce a connettersi al server. – vartec

+0

@vartec Perché è così? Ho fatto qualche errore nella conf configurazione? – rnk

+0

@mk: Non ho idea del perché, devi eseguire il debug di te stesso. Guarda i tuoi registri. Prova a vedere se http: // localhost: 8001 funziona localmente ecc. – vartec

risposta

11

Primo. Non utilizzare if in un conf Nginx. È cattivo. Mi piace davvero, davvero orribile. Utilizzare il seguente invece:

location/{ 
    try_files $uri @proxy; 
} 

location @proxy { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://app_server_djangoapp; 
} 

See: http://wiki.nginx.org/IfIsEvil e http://wiki.nginx.org/Pitfalls

Ora, per quanto riguarda il debug va. I tuoi dipendenti di gunicorn stanno facendo il boot perché c'è un errore fatale. Prova a spegnere il gunicorn. Se stai usando supervisor:

sudo supervisorctl stop [gunicorn process name] 

Poi, dal progetto radice corsa:

python manage.py run_gunicorn -c path/to/gunicorn.conf 

nota di eventuali errori di avvio o se effettivamente gli stivali, testare il tuo sito nel browser. Se non sei ancora ricevendo alcuna informazione significativa provare con lo standard di runserver

python manage.py runserver 

Anche in questo caso, di notare eventuali errori e se lo carica bene, testare il tuo sito nel browser. Suggerisco di provare su localhost: 8000 come faresti nello sviluppo. Uno di questi dovrebbe darti qualcosa con cui funziona.

UPDATE

L'errore che stai ricevendo dice che non riesce a connettersi a "ind = 127.0.0.1". Quindi, guardando il comando che stai utilizzando, gunicorn_django -bind=127.0.0.1:8001, è facile vedere il problema. È possibile specificare l'IP e la porta da associare a -b o --bind. Dal momento che hai utilizzato solo uno -, l'IP viene interpretato come ind=127.0.0.1, che ovviamente non è corretto.È necessario utilizzare:

gunicorn_django --bind=127.0.0.1:8001 

O

gunicorn_django -b 127.0.0.1:8001 
+0

Ho modificato come quello che hai detto. Quindi eseguo questo comando: 'sudo supervisorctl stop qlimp'. Mostra 'unix: ///var/run/supervisor.sock no such file' – rnk

+0

Quando eseguo questo' python manage.py runserver' Non mostra nulla ma quando eseguo 'gunicorn_django -bind = 127.0.0.1: 8001' It mostra https://gist.github.com/2769983 – rnk

+0

E per questo codice 'python manage.py run_gunicorn -c path/to/gunicorn.conf' mostra 'Unknown command:' run_gunicorn'' – rnk

0

Aumentare la keepalive_timeout.

server { 
     listen 5000 default deferred; 
     client_max_body_size 4G; 
     keepalive_timeout 5; 
     server_name _; 
     location/{ 
      proxy_read_timeout 800; 
      proxy_pass http://localhost:9000; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      break; 
     } 
} 
0

È necessario comprendere correttamente le direttive. la direttiva "server_name" contiene l'indirizzo IP e "proxy_pass" si connetterà alla porta su cui è ospitato il server. Nel tuo caso:

server_name 127.0.0.1; 
proxy_pass http://127.0.0.1:8001; 

Non v'è alcuna ragione per questo non lavorare, ma ancora se non li aveva quindi provare comando "python manage.py runserver" per assicurarsi che il sito viene eseguito senza errori, perché nel caso in cui sito non è in grado di presentare dati a wsgi.py che potrebbero mostrare lo stesso errore.

Problemi correlati