2016-11-22 107 views
1

我想为我的网站启用错误日志记录。所以我在我的项目的根目录下创建了一个名为log.txt的文件。django错误日志记录:[Errno 13]权限被拒绝

/home/xyz/public_html/projectname/log.txt 

,并在我这个地址setting.py:

/home/xyz/public_html/projectname/projectname/settings.py 

我有一个简单的日志记录设置:

LOGGINGs = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'verbose': { 
      'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 
      'datefmt' : "%d/%b/%Y %H:%M:%S" 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': 'log.txt', 
      'formatter': 'verbose' 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers':['file'], 
      'propagate': True, 
      'level':'DEBUG', 
     }, 

    } 
} 

这工作我localhostbut罚款,当我把它放到网上时我试图启动我得到的服务器:

[Tue Nov 22 04:27:37.817043 2016] [wsgi:error] [pid 3619] [remote 111.113.21.35:0] ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/log.txt' 

这里是错误堆栈:

(XID d4tgu5) Database Connect Error: Access denied for user 'leechprotect'@'localhost' (using password: YES) 
[Tue Nov 22 04:36:25.934018 2016] [wsgi:info] [pid 4882] mod_wsgi (pid=4882): Create interpreter 'myproject.com|'. 
[Tue Nov 22 04:36:25.960785 2016] [wsgi:info] [pid 4882] mod_wsgi (pid=4882): Adding '/home/xyz/public_html/myproject' to path. 
[Tue Nov 22 04:36:25.961397 2016] [wsgi:info] [pid 4882] mod_wsgi (pid=4882): Adding '/usr/local/lib/python3.4/site-packages/' to path. 
[Tue Nov 22 04:36:25.963133 2016] [wsgi:info] [pid 4882] mod_wsgi (pid=4882, process='myproject', application='myproject.com|'): Loading WSGI script '/home/xyz/public_html/myproject/myproject/wsgi.py'. 
[Tue Nov 22 04:36:26.016998 2016] [wsgi:info] [pid 4925] mod_wsgi (pid=4925): Initializing Python. 
[Tue Nov 22 04:36:26.049383 2016] [wsgi:info] [pid 4925] mod_wsgi (pid=4925): Attach interpreter ''. 
[Tue Nov 22 04:36:26.386166 2016] [wsgi:error] [pid 4882] mod_wsgi (pid=4882): Target WSGI script '/home/xyz/public_html/myproject/myproject/wsgi.py' cannot be loaded as Pytho 
n module. 
[Tue Nov 22 04:36:26.386312 2016] [wsgi:error] [pid 4882] mod_wsgi (pid=4882): Exception occurred processing WSGI script '/home/xyz/public_html/myproject/myproject/wsgi.py'. 
[Tue Nov 22 04:36:26.386413 2016] [wsgi:error] [pid 4882] Traceback (most recent call last): 
[Tue Nov 22 04:36:26.387088 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 557, in configure 
[Tue Nov 22 04:36:26.387135 2016] [wsgi:error] [pid 4882]  handler = self.configure_handler(handlers[name]) 
[Tue Nov 22 04:36:26.387239 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 725, in configure_handler 
[Tue Nov 22 04:36:26.387263 2016] [wsgi:error] [pid 4882]  result = factory(**kwargs) 
[Tue Nov 22 04:36:26.388223 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/__init__.py", line 1006, in __init__ 
[Tue Nov 22 04:36:26.388268 2016] [wsgi:error] [pid 4882]  StreamHandler.__init__(self, self._open()) 
[Tue Nov 22 04:36:26.388337 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/__init__.py", line 1035, in _open 
[Tue Nov 22 04:36:26.388360 2016] [wsgi:error] [pid 4882]  return open(self.baseFilename, self.mode, encoding=self.encoding) 
[Tue Nov 22 04:36:26.388418 2016] [wsgi:error] [pid 4882] PermissionError: [Errno 13] Permission denied: '/log.txt' 
[Tue Nov 22 04:36:26.388464 2016] [wsgi:error] [pid 4882] 
[Tue Nov 22 04:36:26.388483 2016] [wsgi:error] [pid 4882] During handling of the above exception, another exception occurred: 
[Tue Nov 22 04:36:26.388491 2016] [wsgi:error] [pid 4882] 
[Tue Nov 22 04:36:26.388509 2016] [wsgi:error] [pid 4882] Traceback (most recent call last): 
[Tue Nov 22 04:36:26.388781 2016] [wsgi:error] [pid 4882] File "/home/xyz/public_html/myproject/myproject/wsgi.py", line 16, in <module> 
[Tue Nov 22 04:36:26.388819 2016] [wsgi:error] [pid 4882]  application = get_wsgi_application() 
[Tue Nov 22 04:36:26.389032 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application 
[Tue Nov 22 04:36:26.389064 2016] [wsgi:error] [pid 4882]  django.setup() 
[Tue Nov 22 04:36:26.389245 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/site-packages/django/__init__.py", line 17, in setup 
[Tue Nov 22 04:36:26.389273 2016] [wsgi:error] [pid 4882]  configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 
[Tue Nov 22 04:36:26.389521 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/site-packages/django/utils/log.py", line 71, in configure_logging 
[Tue Nov 22 04:36:26.389590 2016] [wsgi:error] [pid 4882]  logging_config_func(logging_settings) 
[Tue Nov 22 04:36:26.389657 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 789, in dictConfig 
[Tue Nov 22 04:36:26.389680 2016] [wsgi:error] [pid 4882]  dictConfigClass(config).configure() 
[Tue Nov 22 04:36:26.389726 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 565, in configure 
[Tue Nov 22 04:36:26.389745 2016] [wsgi:error] [pid 4882]  '%r: %s' % (name, e)) 
[Tue Nov 22 04:36:26.389784 2016] [wsgi:error] [pid 4882] ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/log.txt' 
[Tue Nov 22 04:36:26.390725 2016] [wsgi:info] [pid 4882] mod_wsgi (pid=4882, process='myproject', application='myproject.com|'): Loading WSGI script '/home/xyz/public_html/neg 
inpay/myproject/wsgi.py'. 
[Tue Nov 22 04:36:26.392489 2016] [wsgi:error] [pid 4882] mod_wsgi (pid=4882): Target WSGI script '/home/xyz/public_html/myproject/myproject/wsgi.py' cannot be loaded as Pytho 
n module. 
[Tue Nov 22 04:36:26.392630 2016] [wsgi:error] [pid 4882] mod_wsgi (pid=4882): Exception occurred processing WSGI script '/home/xyz/public_html/myproject/myproject/wsgi.py'. 
[Tue Nov 22 04:36:26.392724 2016] [wsgi:error] [pid 4882] Traceback (most recent call last): 
[Tue Nov 22 04:36:26.392821 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 557, in configure 
[Tue Nov 22 04:36:26.392835 2016] [wsgi:error] [pid 4882]  handler = self.configure_handler(handlers[name]) 
[Tue Nov 22 04:36:26.392882 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/config.py", line 725, in configure_handler 
[Tue Nov 22 04:36:26.392892 2016] [wsgi:error] [pid 4882]  result = factory(**kwargs) 
[Tue Nov 22 04:36:26.392931 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/__init__.py", line 1006, in __init__ 
[Tue Nov 22 04:36:26.392941 2016] [wsgi:error] [pid 4882]  StreamHandler.__init__(self, self._open()) 
[Tue Nov 22 04:36:26.392976 2016] [wsgi:error] [pid 4882] File "/usr/local/lib/python3.4/lib/python3.4/logging/__init__.py", line 1035, in _open 
[Tue Nov 22 04:36:26.392985 2016] [wsgi:error] [pid 4882]  return open(self.baseFilename, self.mode, encoding=self.encoding) 
[Tue Nov 22 04:36:26.393021 2016] [wsgi:error] [pid 4882] PermissionError: [Errno 13] Permission denied: '/log.txt' 

因此,我认为它是如此我暂时将其设置为777,直到我找到一个更好的解决方案日志文件的权限。现在我有:

ls -l /home/xyz/public_html/myproject/log.txt 
-rwxrwxrwx. 1 xyz xyz 0 Nov 22 03:19 /home/xyz/public_html/myproject/log.txt 

它没有工作,然后我搜索了一下,发现一些有这个问题,因为SELinux。所以我已经变成其关闭,以及我现在有:

[[email protected]]# sestatus 
SELinux status:     disabled 

但仍没有运气,我得到这个错误

回答

4

mod_wsgi的可能改变当前目录为/(文件系统的根目录)

您的应用程序尝试写入/log.txt,而不是您创建的。

  • 修改测井公司让 '名' 是一个完整的文件路径,而不是相对

    '文件名': '/home/xyz/public_html/projectname/log.txt',

  • 还要检查,除运行的Apache系统的用户具有对log.txt的

+0

这实际上是因为Apache从系统启动脚本启动并继承'/'作为工作目录。记录在http://modwsgi.readthedocs.io/en/develop/user-guides/application-issues.html#application-working-directory –

2

写权限在使用mod_wsgi的,你不应该使用单独的日志文件。而是直接登录到stdoutstderr,并让它在Apache错误日志文件中捕获。这样的Apache担心权限和日志文件旋转等见断面例的“Python的异常记录”:

如果托管在一个Apache的多个站点,只要确保每个VirtualHost它自己的错误日志文件,以便不同的网站分开。

相关问题