Django 写入日志文件时权限被拒绝
我使用的是ubuntu 13.04。我正在使用sudo服务uwsgi start运行uwsgi 我在django中将日志文件配置为Django 写入日志文件时权限被拒绝,django,ubuntu,uwsgi,Django,Ubuntu,Uwsgi,我使用的是ubuntu 13.04。我正在使用sudo服务uwsgi start运行uwsgi 我在django中将日志文件配置为/home/shwetanka/logs/mysite/mysite.log 但我得到了这个错误- ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log' 我怎么修理它?当我以sudo的
/home/shwetanka/logs/mysite/mysite.log
但我得到了这个错误-
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'
我怎么修理它?当我以sudo的身份运行uwsgi时,这不应该发生。您需要使用
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-
表示文件所有者可读写,组可读写,其他人可读。您必须确保文件的所有者是尝试向其写入内容的服务,或者该文件属于该服务的组,否则您将收到一个权限被拒绝的错误
现在,如果我有一个USWGI服务使用的用户名uwsgi
,并且希望上述文件可由该服务写入,那么我必须更改文件的所有者,如下所示:
chown-uwsgi/home/shwetanka/logs/mysite/mysite.log
。由于所有者的写入位(第一个rwx
组)已设置为1
,因此该文件现在可由UWSGI服务写入。如有任何其他问题,请留下评论。或者,您可以为uwsgi()设置umask选项
我也有同样的情况,我通过www数据运行uwsgi,并使用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数据组的组成员也可以写入该日志文件。谢谢。实际上,uwsgi进程是在“www数据”用户下运行的。我用chown更换了用户,效果很好。无论如何,我将日志文件位置移到了var,并给出了chmod 775和chown www-data:www-data,并且正在工作。再次感谢。