发生权限问题是因为uwsgi将/tmp/uwsgi.sock的所有权和权限重置为755,并且每次uwsgi启动时用户都运行uwsgi。
解决问题的正确方法是使uwsgi更改/tmp/uwsgi.sock的所有权和/或权限,以便nginx可以写入此套接字。因此,有三种可能的解决方案。
- 以www-data用户身份运行uwsgi,以使该用户拥有其创建的套接字文件。
uwsgi -s /tmp/uwsgi.sock -w my_app:app --uid www-data --gid www-data
- 更改套接字文件的所有权,以便www-data拥有它。
uwsgi -s /tmp/uwsgi.sock -w my_app:app --chown-socket=www-data:www-data
- 更改套接字文件的权限,以便www-data可以写入该文件。
uwsgi -s /tmp/uwsgi.sock -w my_app:app --chmod-socket=666
我更喜欢第一种方法,因为它不会让uwsgi以root身份运行。
前两个命令需要以root用户身份运行。第三个命令不需要以root用户身份运行。
第一个命令使uwsgi以www-data用户身份运行。第二和第三个命令使uwsgi以运行该命令的实际用户身份运行。
第一个和第二个命令仅允许www数据用户写入套接字。第三个命令允许任何用户写入套接字。
我更喜欢第一种方法,因为它不会让uwsgi以root用户身份运行,并且不会使套接字文件成为世界可写的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)