1
我想在Ubuntu下運行apache2/mod_wsgi下的CherryPy應用程序。我正在遵循教程here,我的配置幾乎完全相同。在訪問站點的根目錄時,我收到500內部服務器錯誤。在日誌中唯一的錯誤是:在mod_wsgi下運行CherryPy
[Mon Dec 03 04:43:06 2012] [error] [client 64.189.251.239] Premature end of script headers: index.py
我嘗試了好幾種變化的教程,但我沒有收到任何顯著的錯誤。有任何想法嗎?
我的Apache VirtualHost
:
...
WSGIScriptAlias//var/www/example.com/uba/index.py
DocumentRoot /var/www/example.com/uba/
<Directory />
Options +ExecCGI Indexes FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/example.com/uba/>
Options +ExecCGI -Indexes -FollowSymLinks -MultiViews
WSGIApplicationGroup %{GLOBAL}
AllowOverride All
Order allow,deny
allow from all
</Directory>
...
我index.py腳本:
#!/usr/bin/python
import sys
sys.stdout = sys.stderr
import atexit
import threading
import cherrypy
cherrypy.config.update({'environment': 'embedded'})
if cherrypy.__version__.startswith('3.0') and cherrypy.engine.state == 0:
cherrypy.engine.start(blocking=False)
atexit.register(cherrypy.engine.stop)
class Root(object):
def index(self):
return 'Hello World!'
index.exposed = True
application = cherrypy.Application(Root(), script_name=None, config=None)
更新#1:
運行這個很基本的WSGI應用程序產生完全相同的錯誤:
#!/usr/bin/python
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
即使這樣也會產生相同的錯誤。我沒有想過試試這個,因爲我在wsgi下運行了幾個django應用程序也沒有問題。必須關閉apache配置。 – WilHall
哦,我覺得很蠢。在配置中顯然需要'AddHandler wsgi-script .py' - 我假設'WSGIScriptAlias'會繞過那個 – WilHall
好吧,我現在只是猜測,但是你的index.py腳本可執行文件?也許在應用程序函數中放置一個打印語句來查看它是否被調用。 –