2013-11-28 93 views
1

我已經在Apache上設置了mode_wsgi,它工作正常,但是當我嘗試在它上面部署Django時,我得到500內部服務器錯誤。以下是我從Apache錯誤日誌中獲得的跟蹤Django與Apache 500錯誤

[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] mod_wsgi (pid=8212): Target WSGI   script 'H:/DEV/python/mysite/mysite/wsgi.py' cannot be loaded as Python module. 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] mod_wsgi (pid=8212): Exception occurred processing WSGI script 'H:/DEV/python/mysite/mysite/wsgi.py'. 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "H:/DEV/python/mysite/mysite/wsgi.py", line 13, in <module> 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  from django.core.wsgi import get_wsgi_application 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\core\\wsgi.py", line 1, in <module> 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  from django.core.handlers.wsgi import WSGIHandler 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\core\\handlers\\wsgi.py", line 11, in <module> 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  from django.core.handlers import base 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\core\\handlers\\base.py", line 12, in <module> 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  from django.db import connections, transaction 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\db\\__init__.py", line 83, in <module> 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  signals.request_started.connect(reset_queries) 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\dispatch\\dispatcher.py", line 88, in connect 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  if settings.DEBUG: 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 54, in __getattr__ 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  self._setup(name) 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 49, in _setup 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  self._wrapped = Settings(settings_module) 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 132, in __init__ 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1]  % (self.SETTINGS_MODULE, e) 
[Thu Nov 28 12:14:40 2013] [error] [client 127.0.0.1] ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.settings 

對此的任何幫助將不勝感激。由於

以下是該網站

WSGIScriptAlias/"H:/DEV/python/mysite/mysite/wsgi.py" 
WSGIPythonPath "H:/DEV/python/mysite:C:/Python27/Lib/site-packages" 

<Directory "H:/DEV/python/mysite"> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 

了apache的conf,這是在WSGI文件

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
+2

發表你的apache的conf爲您的網站和其他數據,如路徑和WSGI文件 – juliocesar

+0

錯誤日誌中的問題的答案是什麼? *是否在'sys.path'上? –

+0

@juliocesar我已添加額外的數據 – lemaiyan

回答

1

的代碼添加這WSGI腳本:

import sys 
sys.path.append('H:/DEV/python/mysite') 

認沽它在os.environ部分之前

+0

感謝這對我工作 – lemaiyan

+0

當然可以。請注意,juliocesar答案,雖然不是你目前的問題的答案,仍然是正確的,你應該改變你的'目錄'標籤,因爲他建議 – yuvi

+0

@yuvi抱歉,但我認爲你錯了,實際上我有我的項目沒有sys.path,因爲在apache配置文件中,你定義'WSGIPythonPath'爲expample:'WSGIPythonPath「H:/DEV/python/ mysite:C:/ Python27/Lib/site-packages」'你不需要指定sys.path – juliocesar

1

我想,我終於找了一下搜索後,真正的問題:

WSGIPythonPath指令在Apache的配置是錯誤的,你需要;,因爲你是在Windows上改變:,所以它必須看起來像:

WSGIPythonPath "H:/DEV/python/mysite;C:/Python27/Lib/site-packages" 

這就是爲什麼你的wsgi沒有找到你的網站設置,這是處理這個問題的正確方法。有了這個修復程序,你不需要修改自動生成的wsgi文件來在sys.path中添加你的站點(因爲它是多餘的(添加sys.path就是WSGIPythonPath)和不是最佳做法。

(更多關於wsgi docs

你也應該改變這樣的:

<Directory "H:/DEV/python/mysite"> 

由:

<Directory "H:/DEV/python/mysite/mysite"> 
+0

我認爲他需要結合我們的答案 – yuvi