django-gunicorn-nginx:502坏网关

rnk*_*rnk 9 python django nginx gunicorn

我正在尝试将我的Web应用程序发送到服务器,这是我第一次配置服务器.我正在使用django-gunicorn-nginx设置,遵循本教程http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/首先,一切都很完美,我得到了django欢迎页面.然后我在django项目中加载应用程序并设置静态根目录,现在我得到502坏网关你可以在http://qlimp.com查看

gunicorn和supervisor设置的所有内容与该教程中显示的相同.但我修改了一些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/;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的媒体网址:

MEDIA_URL = '/files/'
Run Code Online (Sandbox Code Playgroud)

文件是我拥有所有静态文件的文件夹.如何让我的项目在服务器中工作?谁能指导我?

UPDATE

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

谢谢!

Chr*_*att 11

第一.不要if在nginx 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;
}
Run Code Online (Sandbox Code Playgroud)

请参阅:http://wiki.nginx.org/IfIsEvilhttp://wiki.nginx.org/Pitfalls

现在,就调试而言.你的gunicorn工作人员正在启动,因为有一些致命的错误.尝试关闭gunicorn.如果您正在使用主管:

sudo supervisorctl stop [gunicorn process name]
Run Code Online (Sandbox Code Playgroud)

然后,从您的项目根运行:

python manage.py run_gunicorn -c path/to/gunicorn.conf
Run Code Online (Sandbox Code Playgroud)

请注意任何启动错误或实际启动时,请在浏览器中测试您的站点.如果您仍然没有获得任何有意义的信息,请尝试运行标准的runserver

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

再次注意任何错误,如果加载正常,请在浏览器中测试您的网站.我建议像在开发中那样在localhost:8000上进行测试.其中一个应该给你一些工作.

UPDATE

你得到的错误说它无法连接到"ind = 127.0.0.1".然后,查看您正在运行的命令gunicorn_django -bind=127.0.0.1:8001,很容易看到问题所在.您可以指定IP和端口绑定到与任一-b--bind.因为你只使用了一个-解释IP ind=127.0.0.1,这显然是不正确的.你需要使用:

gunicorn_django --bind=127.0.0.1:8001
Run Code Online (Sandbox Code Playgroud)

要么

gunicorn_django -b 127.0.0.1:8001
Run Code Online (Sandbox Code Playgroud)