Назад | Перейти на главную страницу

Django / uWSGI - Nginx выдает код состояния 502: error.log сообщает «Permission Denied»

Я пытаюсь настроить свое приложение 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

он снова выдает ошибку «Permission Denied». В руководстве говорилось: «Возможно, вам также придется добавить своего пользователя в группу 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

но по-прежнему выдавал ошибку «Permission Denied», когда я это делал:

uwsgi --ini CMS_uwsgi.ini

Я также попытался изменить свой файл CMS_uwsgi.ini на:

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

но он по-прежнему возвращает ошибку «Permission Denied». Есть идеи, почему?

Обратите внимание, что в руководстве упоминается: «Возможно, вам также придется добавить своего пользователя в группу nginx (которая, вероятно, является www-data) ИЛИ VICE-VERSA». Я добавил своего пользователя в www-data, но не знаю, что такое «наоборот».