我正在开发一个 Django 应用程序,但在日志文件方面遇到了问题。我配置了一个记录器来写入/var/log/django/django.log
。当我尝试启动服务器时,出现 500 错误,错误日志显示
ValueError: Unable to configure handler 'djangologfile': [Errno 13] Permission denied: '/var/log/django/django.log'
"httpd/error_log" 480L, 61112C
django.log
和目录的权限django
都是 777。为什么服务器无法写入该文件?
答案1
可能SELinux
阻止了该写入尝试。您可以运行以下命令来禁用它:
setenforce 0
或者创建一个规则以允许其写入。为此,请检查您的系统日志文件并复制“拒绝”的行,它应该是这样的:
audit(...): avc: denied { write } for pid=27984 comm="httpd" name="httpd" dev=sda6 ino=307469 scontext=root:system_r:httpd_t:s0 tcontext=system_u:object_r:usr_t:s0 tclass=...
复制并运行以下命令:
audit2allow -M local << _EOF_
(paste the content)
_EOF_
semodule -i local.pp
这将为其创建一个永久规则,因此您不需要禁用 SELinux。