Django / uWSGI - Nginx 给出 502 状态代码:error.log 显示“权限被拒绝”

Django / uWSGI - Nginx 给出 502 状态代码:error.log 显示“权限被拒绝”

我正在尝试设置我的 Django 应用程序以使用 uWSGI 和 Nginx。我正在遵循本教程: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

我正处于“使用 Unix 套接字代替端口”步骤。我尝试这样做

uwsgi --socket mysite.sock --wsgi-file test.py

但它没有起作用(正如教程所怀疑的那样)。我看了看

/var/log/nginx/error.log

它说

2015/05/11 00:20:17 [crit] 1964#0: *13 connect() to unix:///home/a/Documents/CMS/CMS.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: 192.168.174.131, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///home/a/Documents/CMS/CMS.sock:", host: "127.0.0.1:8000"

当我做

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666

它有效,但是当我这样做时

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=664

它再次给出“权限被拒绝”错误。教程说“您可能还必须将您的用户添加到 nginx 的组(可能是 www-data),反之亦然,以便 nginx 可以正确读取和写入您的套接字。”我的 Ubuntu 超级用户是“customUser”。我做到了

sudo usermod -a -G www-data  customUser

将用户添加到 www-data 组。然后我将其放在我的 CMS_uwsgi.ini 文件中(位于我的 Django 项目文件夹中):

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /home/a/Documents/CMS
# Django's wsgi file
module          = CMS.wsgi
# the virtualenv (full path)
home            = /home/a/.virtualenvs/CMS

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = /home/a/Documents/CMS/CMS.sock

uid = customUser
gid = www-data
# ... with appropriate permissions - may be needed
chmod-socket    = 664
# clear environment on exit
vacuum          = true

但当我这样做时它仍然给我一个“权限被拒绝”的错误:

uwsgi --ini CMS_uwsgi.ini

我还尝试将 CMS_uwsgi.ini 文件更改为:

uid = www-data
gid = www-data
# ... with appropriate permissions - may be needed
chmod-socket    = 664

但它仍然返回“权限被拒绝”错误。知道为什么吗?

请注意,教程中提到“您可能还必须将您的用户添加到 nginx 的组(可能是 www-data),反之亦然”。我将我的用户添加到了 www-data,但我不知道“反之亦然”部分是什么。

相关内容