Отказано в доступе при записи файла журнала

Я использую Ubuntu 13.04. Я использую UWSGI, используя sudo service uwsgi start

Я настроил файл журнала в Django как /home/shwetanka/logs/mysite/mysite.log

Но я получаю эту ошибку -

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'

Как мне это исправить? Этого не должно случиться, когда я запускаю uwsgi как sudo.

2 ответа

Решение

Вам нужно исправить разрешения с помощью chmod команда, как это: chmod 775 /home/shwetanka/logs/mysite/mysite.log,

Посмотрите на владельца файла с ls -l /home/shwetanka/logs/mysite/mysite.log и сделать его доступным для записи uwsgi, Если файл не принадлежит uwsgiвам придется использовать chown команда.

Посмотрите на имя пользователя, под которым работает ваш сервис ps aux | grep 'uwsgi',

Если безопасность не так важна для вас в данный момент, используйте chmod 777 /home/shwetanka/logs/mysite/mysite.log и это все. Но это не так, как это делается.

Самый безопасный способ сделать это - проверить владельца и группу файла, а затем изменить их при необходимости и соответствующим образом настроить разрешения.

Давайте приведем пример.

Если у меня есть файл в /home/shwetanka/logs/mysite/mysite.log и команда ls -l /home/shwetanka/logs/mysite/mysite.log дает следующий вывод:

-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log

это означает, что владельцем файла является shwetanka и группа также shwetanka, Теперь давайте прочитаем rwx биты. Первая группа связана с владельцем файла, поэтому rw- означает, что файл доступен для чтения и записи для владельца, для чтения и записи для группы и для чтения для других. Вы должны убедиться, что владельцем файла является служба, которая пытается что-то записать в нее, или что файл принадлежит группе службы, или вы получите permission denied ошибка.

Теперь, если у меня есть имя пользователя uwsgi он используется службой USWGI и хочет, чтобы вышеуказанный файл был доступен для записи этой службой, мне нужно изменить владельца файла, например так:

chown uwsgi /home/shwetanka/logs/mysite/mysite.log, Так как запись бит для владельца (первая rwx группа) уже настроен на 1этот файл теперь будет доступен для записи сервису UWSGI. По любым вопросам, пожалуйста, оставьте комментарий.

В качестве альтернативы вы можете установить параметр umask для uwsgi ( http://uwsgi-docs.readthedocs.org/en/latest/Options.html).

У меня была такая же ситуация, я запускал uwsgi через www-data и использовал buildout. Так что это исправление в моем случае выглядело так:

[uwsgi]
recipe = buildout.recipe.uwsgi
xml-socket = /tmp/uwsgi.sock
xml-master = True
xml-chmod-socket = 666
xml-umask = 0002
xml-workers = 3
xml-env = ...
xml-wsgi-file = ...

После этого права доступа к файлу журнала стали равны 664, так что члены группы www-data group также могут писать в него.

Другие вопросы по тегам