我已经在本地 Gentoo 机上测试了配置,但是在我的 Strato-vServer 上它不起作用:
$ apache2 -M|grep wsgi
wsgi_module (shared)
# cat /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
DocumentRoot /var/www/vhosts/default/
<Directory /var/www/vhosts/default/>
Options Indexes FollowSymLinks MultiViews ExecCGI
AddHandler cgi-script .cgi
AddHandler wsgi-script .wsgi
SetHandler wsgi-script
Options ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ "/var/www/vhosts/default/cgi-bin/"
<Directory "/var/www/vhosts/default/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
wsgi脚本:
root@h1900160:/var/www/vhosts/default/cgi-bin# cat test.wsgi
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]
该脚本仅显示为纯文本。错误日志显示以下内容:
[Fri May 13 12:54:02 2011] [info] mod_wsgi (pid=14311): Attach interpreter ''.
答案1
这并不能解决您的问题,但是您应该有以下几行:
SetHandler wsgi-script
以下行:
AddHandler wsgi-script .wsgi
已经确保任何带有 .wsgi 扩展名的内容都由 mod_wsgi 处理。添加 SetHandler 只会导致您的 .cgi 脚本不再作为 CGI 脚本提供。此外,您也无法再提供静态文件服务。