我正在使用uWsgi
部署我的django
网站,这是uWsgi.ini
:
[uwsgi]
socket=/var/run/uwsgi.sock
virtualenv=/root/edupalm/env/
chdir=/root/edupalm/edupalm
master=True
workers=8
pidfile=/var/run/uwsgi-master.pid
max-requests=5000
module=edupalm.wsgi:application
并使用nginx,这是我的配置:
server {
listen 9000;
server_name 162.243.146.127;
access_log /var/log/nginx/edupalm_access.log;
error_log /var/log/nginx/edupalm_error.log;
location /static/ {
alias /root/edupalm/edupalm/static/;
}
location / {
uwsgi_pass unix:///var/run/uwsgi.sock;
}
}
但我有502 Bad Gateway
这是日志:
nginx的:
2013/11/26 08:31:09 [error] 1758#0: *57 upstream prematurely closed connection while reading response header from upstream, client: 197.160.112.183, server: 162.243.146.127, request: "GET /admin HTTP/1.1", upstream: "uwsgi://unix:///var/run/uwsgi.sock:", host: "162.243.146.127:9000"
uwsgi:
-- unavailable modifier requested: 0 --
nginx
正在用户www-data
上运行,uwsgi
正在root
答案 0 :(得分:5)
建议您为项目使用新用户,而不是root
问题在于配置,你应该添加
plugin=python
对于权限,最好使用www-data user / group:
uid = www-data
gid = www-data
chmod-socket = 777
chown-socket = www-data
答案 1 :(得分:1)
看起来您使用的是分发包而不是官方的uWSGI源。只需在配置
中加载(在安装之后)带有plugin = python的python插件http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html
答案 2 :(得分:0)
location / {
uwsgi_pass unix:///var/run/uwsgi.sock;
include uwsgi_params;
uwsgi_param SCRIPT_NAME '';
}
答案 3 :(得分:0)
对于在CloudFront后面运行的Django,uWSGI和nginx的组合,我同样遇到了这个问题。事实证明,CloudFront中的路由表没有按预期运行,因此没有收到一些回调。
具体而言,路线“/”从“*”偷走了流量。
另一个问题是我的Django服务器运行了意外的代码;作为用户登录导致他们的用户模型被更改,我出于某种原因没有预测到。所以是的,不要排除你的Django服务器可能合法地忙,导致套接字超时。