如何在apache2中使用Python?


13

我正在尝试让Python与Apache一起使用,但是我无法通过CGI或mod_python获得成功。

有谁知道一个好的教程或什么?

谢谢。

Answers:


17

mod_python基本上是不需要维护的-您应该调查一下mod_wsgi。安装软件包libapache2-mod-wsgi,然后发布sudo a2enmod wsgi以启用它。

作为使它运行的一个简单示例,您可以在其中添加以下内容/etc/apache2/sites-enabled/default

WSGIScriptAlias /test /path/to/python/file.py

并在文件中/path/to/python/file.py

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

重新启动Apache2之后,所有对的请求都/test将变成application()python文件中的调用。

为了进一步阅读,请研究WSGI(Web服务器网关接口),Python与Web服务器集成方式。

奖金/更新:

Python(毫不奇怪)在标准库中有一个用于测试的小型WSGI服务器。如果将此添加到文件底部,则可以将其作为任何旧的可执行文件运行以进行测试,然后让Apache接管生产:

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    httpd = make_server('', 8080, application)
    print "Serving on http://localhost:8080"

    httpd.serve_forever()

我从apache日志中得到以下错误信息。据我所知,它认为没有得到一个字符串。
Vallery

[2011年3月5日17:06:14周六] [错误] [客户端127.0.0.1] mod_wsgi(pid = 2844):处理WSGI脚本'/var/www/file.py'时发生异常。[2011年3月5日17:06:14周六] [错误] [客户端127.0.0.1]追溯(最近一次通话过去):[2011年3月5日17:06:14周六] [错误] [客户端127.0.0.1]文件“ /var/www/file.py”,第2行,位于应用程序中[2011年3月5日星期六17:06:14] [错误] [客户端127.0.0.1] start_response(200,[('Content-Type','text / Plain')])[2011年3月5日星期六17:06:14] [错误] [客户端127.0.0.1] TypeError:状态的预期字节字符串对象,类型为int的值
Vallery

啊。我的错。我习惯于为我做所有棘手的事情的框架;)。我已经将其更新200'200 OK'per python.org/dev/peps/pep-0333
Morten Siebuhr 2011年

很好,行得通。最后一个问题:如何使其以html显示?我的浏览器以纯文本形式显示了返回值,而忽略了标记。
Vallery

1
等待,明白了:将text / plain更改为text / html。
Vallery
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.