【发布时间】:2019-02-16 11:30:28
【问题描述】:
关于如何使用 apache 运行基本的基本 python 脚本有多种方法,但没有明确的教程或任何在线内容。
mod_python? cgi? wsgi?
是否需要用python安装一些东西?
这真是令人困惑。我已经为此工作了好几个小时。
【问题讨论】:
关于如何使用 apache 运行基本的基本 python 脚本有多种方法,但没有明确的教程或任何在线内容。
mod_python? cgi? wsgi?
是否需要用python安装一些东西?
这真是令人困惑。我已经为此工作了好几个小时。
【问题讨论】:
流程
客户端访问网页,例如http://example.com/mangojuice(问题 1)。您的服务器 (apache) 应该知道 mangojuice 是指 /etc/www/superhightechjuice/mango.py。现在应该执行这个 python 文件(问题 2)。 Apache 应该知道 .py 应该被执行而不是简单的服务。但是 Python 不知道何时唤醒和运行。所以需要另一个实体(问题 3)。
三个问题(接口)的解决方案由 mod_wsgi 处理: WSGI 继承自 CGI 概念(用于执行 perl 脚本和 php 脚本)以扩展到 Python 脚本(具有附加功能)。 mod_wsgi 是 Graham Dumpleton 在 Apache 中实现它的方式,现在已成为标准。
代码
def application(environ, start_response):
status = '200 OK'
message = b"Hello World" #Prefix b is useful to convert string to bytestring, which is needed by HTTP
response_header = [('Content-type', 'text/html')]
start_response(status, response_header)
return [message]
原因
当您设置 mod_wsgi 时,它通过 映射文件 wsgi.conf 解决了问题 1。它通过更新 apache 的 .conf 文件 以及其他基于操作系统的设置来解决问题 2。对于问题 3,它告诉 apache,当我看到对 'application' 的引用时,我是一个中间件,我会通知你,并且你们都可以交谈(Apache 和 Python)。这就是 mod_wsgi 的帮助。
设置 mod_wsgi 的步骤
sudo apt install libapache2-mod-wsgi
apachectl 重启
vi /etc/apache2/conf-available/wsgi.conf
WSGIScriptAlias /mangojuice /etc/www/superhightechjuice/mango.py
代码示例与上述相同。 start_response 告诉 mod_wsgi 请求即将到来。 mod_wsgi 与 Apache 对话并让您的代码通过。
参考:
【讨论】: