2010-11-04 76 views
8

$ sudo的/etc/init.d/apache2重啓爲什麼我的Django應用程序不能寫入其日誌文件?

* Restarting web server apache2 
... waiting . ...done. 

用戶名@服務器週四年11月4〜18時54分37秒/的public_html/IDM_app
$ sudo的尾巴-n 60的/ var /登錄/ Apache2的/ error.log中

[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] mod_wsgi (pid=28760): Exception occurred processing WSGI script '/home/username/public_html/idm.wsgi'. 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] Traceback (most recent call last): 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/core/handlers/wsgi.py", line 230, in __call__ 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  self.load_middleware() 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/core/handlers/base.py", line 33, in load_middleware 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  for middleware_path in settings.MIDDLEWARE_CLASSES: 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/utils/functional.py", line 276, in __getattr__ 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  self._setup() 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/conf/__init__.py", line 40, in _setup 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  self._wrapped = Settings(settings_module) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/conf/__init__.py", line 73, in __init__ 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  mod = importlib.import_module(self.SETTINGS_MODULE) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/site-packages/Django-1.2.3-py2.7.egg/django/utils/importlib.py", line 35, in import_module 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  __import__(name) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/home/username/public_html/IDM_app/settings.py", line 60, in <module> 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  from settings_local import * 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/home/username/public_html/IDM_app/settings_local.py", line 1, in <module> 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  from settings_Slicehost_idm import * 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/home/username/public_html/IDM_app/settings_Slicehost_idm.py", line 12, in <module> 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  format='%(pathname)s TIME: %(asctime)s MSG: %(filename)s:%(funcName)s:%(lineno)d %(message)s', 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/logging/__init__.py", line 1500, in basicConfig 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  hdlr = FileHandler(filename, mode) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/logging/__init__.py", line 889, in __init__ 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  StreamHandler.__init__(self, self._open()) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] File "/usr/local/lib/python2.7/logging/__init__.py", line 908, in _open 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38]  stream = open(self.baseFilename, self.mode) 
[Thu Nov 04 18:54:27 2010] [error] [client 8.17.58.38] IOError: [Errno 13] Permission denied: '/home/username/public_html/IDM_app/log/django.osqa.log' 
[Thu Nov 04 18:54:36 2010] [notice] caught SIGTERM, shutting down 
[Thu Nov 04 18:54:37 2010] [notice] Apache/2.2.14 (Ubuntu) mod_wsgi/3.3 Python/2.7 configured -- resuming normal operations 

用戶名@服務器週四年11月4〜18點54分42秒/的public_html/IDM_app
$ ls -l命令的/ home /用戶名/ public_htm L/IDM_app /日誌/ django.osqa.log

-rw-r--r-- 1 username 0 Nov 4 18:24 /home/username/public_html/IDM_app/log/django.osqa.log 

用戶名@服務器週四年11月4〜19時08分41秒/的public_html/IDM_app
** $ ls -l命令〜/的public_html/idm.wsgi **

-rw-r--r-- 1 username 222 Nov 4 18:53 /home/username/public_html/idm.wsgi 

用戶名@服務器週四年11月4〜19時10分50秒/的public_html/IDM_app
$貓〜/的public_html/idm.wsgi

import os 
import sys 

sys.path.append('/home/username/public_html/IDM_app/') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

用戶名@服務器週四年11月4〜19時11分02秒/的public_html/IDM_app $ WHOAMI

username 

如果Apache2的使用虛擬主機設置文件@〜/的public_html/idm.wsgi,哪些用戶系統認爲是試圖寫入日誌文件log/django.osqa.log?

爲什麼我的Django應用程序不能寫入其日誌文件?

回答

17

Apache可能作爲apache用戶運行,這意味着它不具有對日誌文件的寫入權限。它啓動正常,因爲它只需要讀取wsgi文件,該文件對所有用戶都具有讀取權限。要麼是chmod a+w django.osqa.log要麼是chown <apache-user> django.osqa.log

注意:首選的方法是chown該文件。注2:這是依賴於發行版的,但由於看起來Ubuntu-y,Apache用戶將是www-data

+4

使用'chgrp'而不是'chown'也是一個選項。 – 2010-11-05 04:10:53

+0

或者甚至可能更好地使用ACL – 2013-08-08 11:12:15

+0

想要檢查用戶的'apache','www-data'和'daemon' ... – nicorellius 2014-02-01 22:40:40

相關問題