我正在尝试设置我的 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,但我不知道“反之亦然”部分是什么。