簡體   English   中英

Django應用無法寫入日志處理程序; 沒有權限

[英]Django app cannot write to log handler; permission denied

我在Django 1.6.11,Apache 2.4,mod_wsgi上遇到問題,其中日志處理程序沒有寫日志文件的權限。 我意識到這里有很多類似的問題,並且大多數問題都可以通過正確設置文件權限來解決。 相信在這種情況下權限設置正確,但很高興被證明是錯誤的...

從Apache日志+ ps ,您可以看到Apache用戶是apache

[Fri Oct 16 12:47:25.360845 2015] [:error] [pid 33075] [client XXX.XXX.XXX.XXX:64316] ValueError: Unable to configure handler 'custom': [Errno 13] Permission denied: '/var/www/producer/logs/producer2.log', referer: https://example.com/

[user@xxx.xxx.xxx.xxx producer] $ ps auxw | grep 33075
apache   33075  0.8  0.3 445296 27668 ?        Sl   12:47   0:00 /usr/sbin/httpd -DFOREGROUND
user     33230  0.0  0.0 112640   964 pts/2    R+   12:47   0:00 grep --color=auto 33075

但是我的文件許可權表明apache擁有目標文件並且具有讀/寫許可權:

[user@xxx.xxx.xxx.xxx producer] $ ls -al logs
total 4
drwxrwxr-x.  2 apache apache   69 Oct 16 12:45 .
drwxr-xr-x. 20 root   root   4096 Oct 13 16:50 ..
-rw-r--r--.  1 apache apache    0 Oct 16 12:45 producer2.log
-rw-rw-r--.  1 apache apache    0 Oct 16 12:41 producer.log
-rw-rw-r--.  1 apache apache    0 Oct 13 16:50 test_producer.log
[user@xxx.xxx.xxx.xxx producer] $ pwd
/var/www/producer

將日志文件的權限更改為777並沒有幫助。

我的處理程序是這樣配置的:

'handlers': {
    'custom': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/var/www/producer/logs/producer2.log',
            'mode': 'a',
            'maxBytes': 10000000,
            'backupCount': 5,
            'formatter': 'verbose'
    },

我可以在處理程序中將文件更改為指向其他位置,但是無論我將其指向何處以及如何更改目標文件/目錄的Permission denied ,都會出現“ Permission denied錯誤。 我記得有時您也必須更改父目錄的權限,但是即使將其設置為777並由apache擁有,我也會遇到相同的錯誤。

我是否在某個地方錯過了一個愚蠢的步驟,或者有錯別字(可以從一些新鮮的眼睛中受益)? 是否有其他可能的原因導致此問題,這些原因已被掩蓋? 我之前在其他應用中已經做到了這一點,通常可以使用文件系統權限來清除它...

好的,這是一個隨機的解決方案,但是事實證明,我們的IT部門正在使用SELinux來管理內核級權限...這忽略了我所做的任何事情。 解決方案-與IT一起更新SELinux權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM