Mod\u python不生成输出

2024-09-22 16:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

刚刚在一个带有python2.4.3的centos5(apache2.2.3)服务器上安装并配置mod_python3.2.8。它是由Apache装载的。在

我激活了mpinfo测试页,它就可以工作了。所以我用下面的代码写了一个简单的“Hello World”:

from mod_python import apache

def handler(req):
    req.content_type = 'text/plain'
    req.write("Hello World!")
    req.flush()
    return apache.OK

它输出一个空白页,没有文本也没有来源。如果我有意识地创建了一个语法错误,我会得到URL上的错误输出,例如(当我在“def”之前加上空格时):

^{pr2}$

我花了大约五个小时浏览了不同的教程、常见问题解答和故障排除指南,但找不到这个示例问题的描述。在

你认为问题/原因是什么?在

编辑:这是站点的Apache配置。。。在

<Directory />
    Options FollowSymLinks
    AllowOverride None

    AddHandler mod_python .py
    PythonHandler mptest
    PythonDebug On 
</Directory>

编辑2:啊,我忘了提的另一件事是,我打算用mod峎python编写Apache扩展。应用程序本身是用PHP编写的,但我需要在服务器上制作一些安全软件:)


Tags: 代码fromimportmod编辑helloworldapache
3条回答

为了清楚起见,我做了一个全新的答案。。。在

我决定改为安装mod\wsgi。所以我已经设置好了,当我转到我的测试文件时,我只看到页面源代码。我还没有花时间去发现问题,所以当我解决问题或决定需要更多帮助时,我会给你回复:)

谢谢:)

你最初的问题是_python.cgihandler正在调用以处理请求。这意味着您的Python脚本文件被解释为CGI脚本。因此,难怪它不返回任何内容。在

您可能在启用mod的Apache配置中有冲突的定义_python.cgihandler. 在

不要使用mod_python。在

一个常见的错误是将mod_python视为“mod_php,但对于python”,这是不正确的。mod_python更适合编写apache扩展,而不是web应用程序。在

pythonweb应用程序和web服务器(不仅仅是apache)之间使用的standartized协议是WSGI。使用它可以确保您可以将应用程序发布到任何符合wsgi的web服务器(几乎所有现代web服务器都是wsgi兼容的)

在apache上,使用^{}。在

在apache上使用wsgi标准和mod_wsgi重写了示例:

mywebapp.py

def application(environ, start_response):
    start_response('200 OK', [('content-type', 'text/plain')])
    return ['Hello World']

Apache配置:

^{pr2}$

现在只要转到http://localhost/myapp,脚本就会运行。此外,此根目录下的任何访问(即http://localhost/myapp/stuff/here)都将由该脚本处理。在

选择一个web框架是个好主意。CherryPyPylonsDjango。他们让事情变得更容易。在

一个好的网站是wsgi.org

相关问题 更多 >