刚刚在一个带有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编写的,但我需要在服务器上制作一些安全软件:)
为了清楚起见,我做了一个全新的答案。。。在
我决定改为安装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
:Apache配置:
^{pr2}$现在只要转到
http://localhost/myapp
,脚本就会运行。此外,此根目录下的任何访问(即http://localhost/myapp/stuff/here
)都将由该脚本处理。在选择一个web框架是个好主意。CherryPy。Pylons。Django。他们让事情变得更容易。在
一个好的网站是wsgi.org
相关问题 更多 >
编程相关推荐