gpt4 book ai didi

python - Mod_python 不产生输出

转载 作者:行者123 更新时间:2023-12-01 00:00:29 24 4
gpt4 key购买 nike

刚刚使用 Python 2.4.3 在 CentOS 5 (Apache 2.2.3) 服务器上安装并配置了 mod_python 3.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”之前放置一个空格时):

Mod_python error: "PythonHandler mod_python.cgihandler"

Traceback (most recent call last):

File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch
result = object(req)

File "/usr/lib/python2.4/site-packages/mod_python/cgihandler.py", line 96, in handler
imp.load_module(module_name, fd, path, desc)

File "/var/www/vhosts/localhost/httpdocs/mptest.py", line 3

def handler(req):

^

SyntaxError: invalid syntax

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

您认为问题/原因可能是什么?

编辑:这是该站点的 Apache 配置...

<Directory />
Options FollowSymLinks
AllowOverride None

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

编辑2:啊,我忘了提到的另一件事是我打算使用mod_python来编写Apache扩展。应用程序本身是用 PHP 编写的,但我需要在服务器上进行一些安全调整:)

最佳答案

不要使用mod_python

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

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

在 apache 上,使用 mod_wsgi相反。

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

mywebapp.py:

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

Apache 配置:

WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/mywebapp.py
<Directory /usr/local/www/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

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

选择一个 Web 框架是个好主意。 CherryPyPylonsDjango 。它们让事情变得更加容易。

一个值得一看的好网站是 wsgi.org

关于python - Mod_python 不产生输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com