10

Web アプリケーションをサーバーに送信しようとしていますが、サーバーを構成するのはこれが初めてです。このチュートリアルhttp://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/に従って、 django-gunicorn-nginxセットアップを使用しています。最初はすべて完璧で、django ウェルカム ページが表示されました。次に、アプリを django プロジェクトにロードし、静的ルートをセットアップしました。今、502 の不正なゲートウェイを取得しています。http: //qlimp.comで確認できます。

ガンコーンとスーパーバイザーのセットアップまでは、そのチュートリアルで示したものと同じです。しかし、いくつかのnginx confを変更しました。ここにあります:

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

ここに私のメディアのURLがあります:

MEDIA_URL = '/files/'

Files は、すべての静的ファイルがあるフォルダーです。プロジェクトをサーバーで動作させるにはどうすればよいですか? 誰でも私を案内してもらえますか?

アップデート

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

ありがとう!

4

4 に答える 4

12

初め。ifnginx confでは使用しないでください。これは悪いです。本当に、本当に恐ろしい。代わりに次を使用します。

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

参照: http://wiki.nginx.org/IfIsEvilおよびhttp://wiki.nginx.org/Pitfalls

さて、デバッグに関する限り。致命的なエラーが発生したため、gunicorn ワーカーが起動しています。ガンコーンをシャットダウンしてみてください。スーパーバイザーを使用している場合:

sudo supervisorctl stop [gunicorn process name]

次に、プロジェクトのルートから次を実行します。

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

起動エラーに注意するか、実際に起動する場合は、ブラウザでサイトをテストしてください。それでも意味のある情報が得られない場合は、標準の runserver を実行してみてください

python manage.py runserver

繰り返しますが、エラーに注意してください。正常に読み込まれる場合は、ブラウザでサイトをテストしてください。開発中と同じように、localhost:8000 でテストすることをお勧めします。これらのうちの 1 つを使用すると、何か作業を行うことができます。

アップデート

「ind=127.0.0.1」に接続できないというエラーが表示されます。次に、実行しているコマンドgunicorn_django -bind=127.0.0.1:8001を見ると、問題が簡単にわかります。-bまたはを使用して、バインド先の IP とポートを指定できます--bind。1 つしか使用していないため-、IP を として解釈していますがind=127.0.0.1、これは明らかに正しくありません。以下を使用する必要があります。

gunicorn_django --bind=127.0.0.1:8001

または

gunicorn_django -b 127.0.0.1:8001
于 2012-05-22T15:14:15.907 に答える
2

ディレクティブを正しく理解する必要があります。「server_name」ディレクティブは IP アドレスを保持し、「proxy_pass」はサーバーがホストされているポートに接続します。あなたの場合:

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

これが機能しない理由はありませんが、それでも機能しない場合は、「python manage.py runserver」コマンドを試して、サイトがエラーなしで実行されることを確認してください。同じエラーが表示される可能性があります。

于 2016-03-20T14:16:16.237 に答える
0

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;
        }
}
于 2015-07-24T10:32:05.790 に答える