我正在尝试将我的 Web 应用程序发送到服务器,这是我第一次配置服务器。我正在按照本教程 http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ 使用 django-gunicorn-nginx 设置首先一切都很完美,我得到了 django 欢迎页面。然后我在 django 项目中加载了应用程序并设置了静态根,现在我得到了 502 bad gateway 您可以在 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/;
}
}
这是我的媒体网址:
MEDIA_URL = '/files/'
Files 是我拥有所有静态文件的文件夹。如何让我的项目在服务器上运行?谁能指导我?
更新
错误日志 https://gist.github.com/2768425
谢谢!
最佳答案
首先。不要在 nginx conf 中使用 if
。这不好。真的,真的很可怕。请改用以下内容:
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 worker 正在启动,因为有一些 fatal error 。尝试关闭 gunicorn。如果您使用的是主管:
sudo supervisorctl stop [gunicorn process name]
然后,从您的项目根目录运行:
python manage.py run_gunicorn -c path/to/gunicorn.conf
注意任何启动错误,或者如果它确实启动了,请在浏览器中测试您的网站。如果您仍然没有获得任何有意义的信息,请尝试运行标准运行服务器
python manage.py runserver
再次注意任何错误,如果加载正常,请在浏览器中测试您的网站。我建议像在开发中一样在 localhost:8000 上进行测试。其中之一应该可以为您提供有用的东西。
更新
您遇到的错误是无法连接到“ind=127.0.0.1”。然后,查看您正在运行的命令 gunicorn_django -bind=127.0.0.1:8001
,很容易看出问题所在。您可以使用 -b
或 --bind
指定要绑定(bind)的 IP 和端口。由于您只使用了一个 -
,它将 IP 解释为 ind=127.0.0.1
,这显然是不正确的。您需要使用:
gunicorn_django --bind=127.0.0.1:8001
或者
gunicorn_django -b 127.0.0.1:8001
关于python - django-gunicorn-nginx : 502 bad gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700638/