Django / nginx / uwsgi出现502错误
Posted
技术标签:
【中文标题】Django / nginx / uwsgi出现502错误【英文标题】:502 error with Django / nginx / uwsgi 【发布时间】:2016-02-16 01:32:36 【问题描述】:我压力很大,因为我正试图让这个网站在我的 ubuntu 服务器上运行。我只是一个试图自己托管东西的前端。我想我几乎把它弄下来了。但访问域时仍然收到 502 bad gateway error。
这是我的项目树:
-- var
-- www
-- stacaravanverhuurgroesbeek
|-- env/
|-- logs/
|-- access.log
|-- error.log
`-- uwsgi.log
|-- conf/
| |-- stacaravanverhuurgroesbeek.sock
| `-- uwsgi.ini
`-- public/
|-- manage.py
|-- media/
|-- project.db
|-- requirements.txt
|-- static/
`-- website/
|-- dev/
|-- gulp/
|-- gulpfile.js
|-- package.json
|-- settings.py
|-- static/
|-- templates/
|-- urls.py
`-- wsgi.py
我的 uwsgi ini 文件:
/var/www/stacaravanverhuurgroesbeek/conf/uwsgi.ini
:
[uwsgi]
# variables
projectname = stacaravanverhuurgroesbeek
projectdomain = stacaravanverhuurgroesbeek.nl
base = /var/www/stacaravanverhuurgroesbeek
# config
chdir = %(base)/public
home = %(base)/env
wsgi-file = %(base)/public/website/wsgi.py
master = True
processes = 5
socket = %(base)/conf/%(projectname).sock
vacuum = true
die-on-term = true
logto = %(base)/logs/uwsgi.log
我的 nginx 配置:
/etc/nginx/sites-available/stacaravanverhuurgroesbeek
:
server
listen 80;
server_name stacaravanverhuurgroesbeek.nl www.stacaravanverhuurgroesbeek.nl;
root /var/www/stacaravanverhuurgroesbeek/;
access_log /var/www/stacaravanverhuurgroesbeek/logs/access.log;
error_log /var/www/stacaravanverhuurgroesbeek/logs/error.log;
location /static/
root /var/www/stacaravanverhuurgroesbeek/public/static/;
location /media/
root /var/www/stacaravanverhuurgroesbeek/public/media/;
location /
include uwsgi_params;
uwsgi_pass unix:///var/www/stacaravanverhuurgroesbeek/conf/stacaravanverhuurgroesbeek.sock;
我还将这个文件符号链接到sites-enabled
。
还有我的启动脚本:
/etc/init/uwsgi.conf
# Emperor uWSGI script
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [!2345]
setuid bastard
setgid bastard
exec uwsgi --master --emperor /etc/uwsgi/vassals
而且每次我更改某些内容时,我都会重新启动 nginx 和 uwsgi,但没有任何效果。
我真的希望有人能看到我的设置中的问题。
【问题讨论】:
您的 wsgi 配置是否与附庸相关联?皇帝怎么找到你的配置? @electrometro 是的,我将它符号链接到 vassals 目录.. 那个unix套接字路径名应该有三个斜杠吗?通常一个人会做。 @RichardSmith 我之前都试过了,在某处的帖子中看到了三个斜线。现在我也把它改回了一个斜线,但仍然没有效果:( .sock 文件是否已创建?如果是,请尝试删除它,然后重新启动 nginx。 【参考方案1】:也许你应该在 Nginx 配置中设置上游,因为你要将所有请求代理到 uWSGI。例如:
upstream uwsgi_app
server unix:///path/to/your/mysite/mysite.sock; # взаимодействие
server
...
location /
uwsgi_pass uwsgi_app;
include uwsgi_params;
...
如果它不起作用,请同时提供 uWSGI 日志以确保请求确实到达 uWSGI 并且没有发生错误。
【讨论】:
以上是关于Django / nginx / uwsgi出现502错误的主要内容,如果未能解决你的问题,请参考以下文章
centos6.5+Django+mysql+nginx+uwsgi