我正在运行一个带有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错误.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
系统范围的版本中,只需摆脱问题即可。如果需要同时运行这两个实例,请查看禁用皇帝模式。