UWSGI 套接字更改组并拒绝连接,导致 502 bad gateway

UWSGI socket changes group and refused connection, resulting in 502 bad gateway

我正在 运行使用 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 发生这种情况。如何解决这个问题?

供我自己或其他有类似问题的人参考。

问题出在系统范围的 UWSGI 运行,以及虚拟环境中的 UWSGI。系统范围版本启用了皇帝模式,这导致系统范围版本控制了虚拟环境中的应用程序 运行,这反过来导致所有配置和 python-home 目录成为离开。

对我来说,解决方案很简单。 sudo service uwsgi stop 在全系统版本中,简单地解决这个问题。如果您需要两个实例 运行,请考虑禁用皇帝模式。