2010-11-04 14 views
8

$ sudo /etc/init.d/apache2 restartPourquoi mon application Django n'écrit-elle pas dans son fichier journal?

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

nom d'utilisateur @ servername jeu 4 novembre 18:54:37 ~/public_html/IDM_app
$ queue -n 60 sudo/var/log/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 

nom d'utilisateur @ servername jeu 4 novembre 18:54:42 ~/public_html/IDM_app
$ ls -l/home/nom d'utilisateur/public_htm l/IDM_app/log/django.osqa.log

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

nom d'utilisateur @ servername Jeu 4 novembre 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 

nom d'utilisateur @ servername jeu 4 novembre 19:10:50 ~/public_html/IDM_app
$ cat ~/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() 

nom d'utilisateur @ servername jeu 4 novembre 19:11:02 ~/public_html/IDM_app $ whoami

username 

Si Apache2 utilise le fichier de configuration de l'hôte virtuel @ ~/public_html/de idm.wsgi, ce que l'utilisateur le système pense-t-il essayer d'écrire le journal du fichier journal/django.osqa.log?

Pourquoi mon application Django n'écrit-elle pas dans son fichier journal?

Répondre

17

Apache s'exécute probablement en tant qu'utilisateur apache, ce qui signifie qu'il n'a pas accès en écriture au fichier journal. Il démarre très bien car il n'a qu'à lire le fichier wsgi, qui a des droits de lecture pour tous les utilisateurs. soit chmod a+w django.osqa.log ou chown <apache-user> django.osqa.log.

Remarque: la méthode préférée serait de chown le fichier.

Note 2: ceci dépend de la distribution, mais puisque cela ressemble à Ubuntu-y, l'utilisateur apache sera www-data.

+4

L'utilisation de 'chgrp' au lieu de' chown' est également une option. –

+0

Ou peut-être même mieux utiliser les ACL –

+0

voulez vérifier 'apache',' www-data', et 'daemon' pour les utilisateurs ... – nicorellius