何时以及如何为uWSGI,nginx和Django堆栈创建.sock文件

问题描述 投票:0回答:1

我知道有很多关于这个的问题主要源于跟随官方的uWSGI guide。我也遇到了权限问题,但其他答案已经涵盖了它们。我想更好地了解如何以及何时创建Unix套接字/套接字文件。仅供参考,这是在运行Amazon Linux 2 AMI的AWS ec2实例上。

uWSGI指南指示您安装nginx,Django和uwsgi。然后单独测试Django开发服务器和nginx。然后在this section你测试uWSGI和nginx与tcp / ip socket一起工作进行通信。之后,仍然没有涉及Django项目,他们描述了如何使用Unix套接字而不是tcp / ip套接字来进行nginx和uWSGI之间的通信。在所有nginx / uWSGI配置之后,您从主目录运行命令(至少对于我的特定文件结构和Django项目,~/test_project):

uwsgi --socket test_project/test_project.sock --wsgi-file test.py

一旦处理了一些许可问题,这种方法就可以了。我的问题是:什么是test_project.sock,什么时候创建,以及哪个进程创建它。我目前最了解的是uWSGI创建了它,但为什么我们需要整合Django项目(这里是test_project)?为什么不在Django项目文件夹之外创建套接字?我们使用的是python语法,它是某些test_project对象或模块的成员吗?

我知道test_project.sock与Unix套接字有关。我认为这将是一个真实的文件,但它似乎不是。即使我在后台运行uWSGI并查看相应的目录,它也不存在。它是如此短暂,只有在请求实际从nginx传递到uWSGI时才存在?

此外,如果无法真正查看文件(test_project.sock),我怎么知道访问它需要哪些权限?我运行了一些测试,现在怀疑它与~/test_project/test_project/wsgi.py文件的权限有关,但我没有任何直接的证据。

python django sockets nginx uwsgi
1个回答
1
投票

您可以在Django项目之外创建套接字*.sock文件。当你这样做时,文件将在uWSGI进程结束后保持不变。然后,您可以查看该文件并确定权限。

我很困惑,因为很多教程,包括[官方uWSGI] 1教程,让用户将*.sock文件放入Django项目。我仍然不确定为什么这是必要的以及为什么文件在这种情况下不会持续存在。

© www.soinside.com 2019 - 2024. All rights reserved.