我已将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时,这不应该发生.
解决方法
使用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服务写入.如有任何其他问题,请发表评论.