2012-06-29 22 views
1

我在Debian系統上使用apache2 + mod_wsgi設置了django服務器(1.4,python 2.7)。從django的角度來看,一切都很完美,如果我運行manage.py runserver,開發服務器會正​​確顯示網站,但是,當我嘗試設置我的apache服務器來運行WSGI時,它無法顯示ValueError。Apache-Django WSGI異常:ValueError:格式爲零的長度字段名稱

這是mysite.wsgi

ALLDIRS = ['/usr/local/lib/python2.7/site-packages'] 
# the above directory depends on the location of your python installation. 
# if using virtualenv, it will need to match your projects locale. 
import os 
import sys 
import site 

os.environ['DJANGO_SETTINGS_MODULE'] = 'ggDatabase.settings' 
prev_sys_path = list(sys.path) 
sys.path.append("/usr/local/lib/python2.7") 
path = "/home/acad/statsdb/src" 
if path not in sys.path: 
     sys.path.append(path) 
     sys.path.append("/home/acad/statsdb/src/ggDatabase") 
for directory in ALLDIRS: 
     site.addsitedir(directory) 
     new_sys_path = [] 
     for item in list(sys.path): 
      if item not in prev_sys_path: 
       new_sys_path.append(item) 
       sys.path.remove(item) 
       sys.path[:0] = new_sys_path 

# change this depending on your project. 

site.addsitedir("/home/acad/statsdb/src/ggDatabase/") 


os.environ['PYTHON_EGG_CACHE'] = '/home/acad/.python-eggs' 
os.environ['SETTINGS_MODULE'] = 'settings' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

這是Apache的虛擬主機配置

<VirtualHost 127.0.0.1:8000> 
    ServerName mysite.com 
    ServerAlias www.mysite.com 
    <Directory /home/acad/statsdb/src/ggDatabase> 
     Order deny,allow 
     Allow from all 
    </Directory> 

    LogLevel warn 
    CustomLog /var/log/apache2/mysite.com.access.log combined 
    ErrorLog /var/log/apache2/mysite.com.error.log 

    WSGIDaemonProcess mysite.com user=acad group=acad threads=25 python-path=/usr/local/lib/python2.7 
    WSGIProcessGroup mysite.com 
    WSGIScriptAlias//home/acad/statsdb/src/ggDatabase/apache/mysite.wsgi 

</VirtualHost> 

這是確切的配置,我有我的測試服務器上,並可以正常訪問,但嘗試運行wsgi腳本時新服務器遇到問題:

[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] mod_wsgi (pid=26233): Target WSGI script '/home/acad/statsdb/src/ggDatabase/apache/mysite.wsgi' cannot be loaded as Python module. 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] mod_wsgi (pid=26233): Exception occurred processing WSGI script '/home/acad/statsdb/src/ggDatabase/apache/mysite.wsgi'. 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] File "/home/acad/statsdb/src/ggDatabase/apache/mysite.wsgi", line 31, in <module> 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1]  import django.core.handlers.wsgi 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 8, in <module> 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1]  from django import http 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/site-packages/django/http/__init__.py", line 11, in <module> 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1]  from urllib import urlencode, quote 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] File "/usr/local/lib/python2.7/urllib.py", line 1228, in <module> 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1]  _safe_map[c] = c if (i < 128 and c in always_safe) else '%{:02X}'.format(i) 
[Fri Jun 29 09:38:14 2012] [error] [client 127.0.0.1] ValueError: zero length field name in format 

錯誤是非常通用的,我真的不知道會出現什麼問題。有任何想法嗎?

在此先感謝!

布魯諾

回答

0

解決了它。如果有人有類似的錯誤,一定要打印sys.version,你可能會發現(和我一樣)wsgi是在另一個已安裝的python版本下配置的。

如果是這種情況,請使用--with-python選項重新安裝mod_wsgi。

相關問題