2012-05-22 22 views
9

Ich versuche, meine Webanwendung an den Server zu senden, und das ist mein erster Konfiguration des Servers. Ich benutze django-gunicorn-nginx Setup durch Befolgen dieses Tutorials http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ Zuerst war alles perfekt und ich bekam die django Willkommensseite. Dann lud ich die Apps im django Projekt und Setup der statische Wurzel und jetzt bin ich 502 falsches Gateway bekommen Check-out in kann http://qlimp.comdjango-gunicorn-nginx: 502 schlechtes Gateway

Alles bis dem gunicorn und Supervisor-Setup ist das gleiche wie in diesem Tutorial gezeigt . Aber ich habe etwas nginx conf geändert. Hier ist sie:

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/; 
    } 
} 

Hier ist meine Medien url:

MEDIA_URL = '/files/' 

Dateien ist der Ordner, in dem ich alle statischen Dateien habe. Wie kann ich mein Projekt auf dem Server arbeiten lassen? Könnte mich jemand führen?

UPDATE

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

Dank!

+0

502 bedeutet im Grunde genommen, dass nginx keine Verbindung zum upserver herstellen kann. – vartec

+0

@vartec Warum ist es so? Habe ich einen Fehler bei der Konfiguration des Conf gemacht? – rnk

+0

@mk: Ich habe keine Ahnung warum, Sie müssen das selbst debuggen. Sieh dir deine Protokolle an. Versuchen Sie zu sehen, ob http: // localhost: 8001 lokal usw. funktioniert. – vartec

Antwort

11

Zuerst. Verwenden Sie nicht if in einem Nginx-Konf. Es ist schlecht. Wie wirklich, wirklich schrecklich. Verwenden Sie die folgenden statt:

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; 
} 

Siehe auch: http://wiki.nginx.org/IfIsEvil und http://wiki.nginx.org/Pitfalls

Nun, so weit wie das Debuggen geht. Deine Gunicorn-Arbeiter booten, weil es einen fatalen Fehler gibt. Versuchen Sie, Gunicorn zu schließen. Wenn Sie mit Supervisor:

sudo supervisorctl stop [gunicorn process name] 

Dann aus dem Projekt root laufen:

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

Hinweis beliebigen Startfehler oder wenn es tatsächlich Stiefel, testen Sie Ihre Website im Browser. Wenn Sie immer noch keine sinnvollen Informationen immer versuchen Sie, nur die Standard-runserver

python manage.py runserver 

Wieder Fehler beachten, und wenn es gut lädt, testen Sie Ihre Website im Browser. Ich schlage vor, auf localhost: 8000 zu testen, wie Sie es in der Entwicklung tun würden. Eine davon sollte Ihnen etwas zu arbeiten geben.

UPDATE

Der Fehler Sie bekommen, sagt es nicht auf "ind = 127.0.0.1" anschließen. Wenn Sie sich den Befehl gunicorn_django -bind=127.0.0.1:8001 ansehen, können Sie das Problem leicht erkennen. Sie können die zu verbindende IP-Adresse und den Port entweder mit -b oder --bind angeben. Da Sie nur eine verwendet haben, interpretiert es die IP als ind=127.0.0.1, was offensichtlich nicht korrekt ist.Sie müssen verwenden:

gunicorn_django --bind=127.0.0.1:8001 

Oder

gunicorn_django -b 127.0.0.1:8001 
+0

Ich habe das geändert, was du gesagt hast. Dann führe ich diesen Befehl aus: 'sudo supervisorctl stop qlimp'. Es zeigt 'unix: ///var/run/supervisor.sock keine solche Datei' – rnk

+0

Wenn ich diesen 'python manage.py runserver' laufen lasse, zeigt es nichts anderes als wenn ich 'gunicorn_django -bind = 127.0.0.1: 8001' It ausführen zeigt https://gist.github.com/2769983 – rnk

+0

Und für diesen Code 'python manage.py run_gunicorn -c Pfad/zu/gunicorn.conf' zeigt es' Unbekannter Befehl: 'run_gunicorn'' – rnk

0

die keepalive_timeout erhöhen.

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

Sie müssen die Anweisungen richtig verstehen. Die Direktive "server_name" enthält die IP-Adresse und "proxy_pass" wird mit dem Port verbunden, auf dem sich Ihr Server befindet. In Ihrem Fall:

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

Es gibt keinen Grund dafür ist nicht, aber immer noch zu arbeiten, wenn es dann nicht versuchen, „Python manage.py runserver“ Befehl, um sicherzustellen, dass Ihre Website ohne Fehler läuft, weil im Fall Website ist nicht in der Lage, Daten für wsgi.py darzustellen, die wahrscheinlich den gleichen Fehler aufweisen.

Verwandte Themen