UWSGI套接字更改组并拒绝连接,导致502坏网关

时间:2017-07-30 10:37:08

标签: django sockets nginx uwsgi

我正在使用NGINX / UWSGI运行Django应用程序。

我打电话给uwsgi:

/home/rootadmin/.virtualenvs/data_collection/bin/uwsgi --ini /etc/uwsgi/sites/data_collection_project.ini

data_collection_project.ini

[uwsgi]
project = data_collection_project
base = /data_nfs/data_collection_project

chdir = %(base)
home = /home/rootadmin/.virtualenvs/data_collection

module = data_collection_project.wsgi:application
master = true
processes = 2

socket = /data_nfs/data_collection_project/%(project).sock
chmod-socket = 666

结果,创建了.sock。使用ls -l我将套接字视为

srw-rw-rw-  1 rootadmin rootadmin        0 Jul 30 12:24 data_collection_project.sock

此时,我的网站运行正常。在某些时候,我无法确定,我的网站开始重新调整502 bad gateway每个请求。此时,我发现.sock的群组已更改为www-data

srw-rw-rw-  1 rootadmin www-data         0 Jul 30 12:25 data_collection_project.sock

此时,我的nginx error.log也引发了这个错误:

2017/07/30 12:25:34 [error] 1940#0: *652 connect() to unix:///data_nfs/data_collection_project/data_collection_project.sock failed (111: Connection refused) while connecting to upstream, client: client_ip, server: my_ip, request: "GET  /admin/binaryQuestionApp/point/ HTTP/1.1", upstream: "uwsgi://unix:///data_nfs/data_collection_project/data_collection_project.sock:", host: "my_website_", referrer: "https://my_website/admin/binaryQuestionApp/"

我不知道为什么/从哪里发生这种变化。我的网站过去一直运行正常,我一直在使用它。然而,今天,我第一次跑了sudo reboot,自从发生这种情况以来。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于我自己将来的参考,或其他有类似问题的人。

问题在于系统范围的UWSGI与虚拟环境中的UWSGI一起运行。系统范围版本启用了emperor模式,这导致系统范围版本控制在虚拟环境中运行的应用程序,这反过来导致所有配置和python-home目录关闭。

对我来说,解决方案很简单。系统范围版本中的sudo service uwsgi stop,可以简单地解决问题。如果您需要两个实例都在运行,请查看禁用emperor模式。