2011-03-02 90 views
4

我們使用Apache + mod_wsgi來承載我們的Django應用程序。偶爾500錯誤

阿帕奇:

WSGIScriptAlias//home/rls/django_wsgi.py

django_wsgi.py:

import os, sys 
sys.path.append('data/misc/django') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'rls.settings' 

import django.core.handlers.wsgi 

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

一切工作正常,但有時我們得到500內部服務器錯誤與此日誌中:

mod_wsgi (pid=4825): Exception occurred processing WSGI script '/home/rls/django_wsgi.py'. 
Traceback (most recent call last): 
File "/usr/lib/python2.5/site-packages/django/core/handlers/wsgi.py", line 230, in __call__ 
self.load_middleware() 
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 33, in load_middleware 
for middleware_path in settings.MIDDLEWARE_CLASSES: 
File "/usr/lib/python2.5/site-packages/django/utils/functional.py", line 276, in __getattr__ 
self._setup() 
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 40, in _setup 
self._wrapped = Settings(settings_module) 
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 75, in __init__ 
raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'rls.settings' (Is it on sys.path? Does it have syntax errors?): No module named rls.settings 

當然在settings.py中沒有語法錯誤因爲它每隔一段時間都會加載。我錯過了什麼?非常感謝您的幫助。

+0

通常情況下,除非您自從上次更改爲在Python代碼中進行配置後才重新啓動Apache或mod_wsgi守護進程,否則通常不應該隨機看到此內容。將Apache配置文件的相關部分用於設置mod_wsgi,包括如何使用VirtualHosts ,表明您是否有多個VirtualHost定義。 – 2011-03-02 22:08:38

回答

2

嘗試設置包含文件settings.py的目錄的絕對路徑。 你的情況應該是這樣的:

sys.path.append('/%s/data/misc/django'%ROOT_2_DATA) 

您還必須檢查Apache組有權讀/寫文件夾。

+0

是的,我注意到/發佈這個問題後幾乎馬上就失蹤了,它確實解決了這個問題。儘管如此,我不知道它爲什麼會起作用,因爲路徑錯了。感謝您的回答。 – 2011-03-16 21:12:34