【问题标题】:Easiest way to run python script from Apache从 Apache 运行 python 脚本的最简单方法
【发布时间】:2023-04-06 05:21:01
【问题描述】:

我花了很长时间试图弄清楚这一点。我基本上是在尝试开发一个网站,当用户单击特定按钮时,我必须在其中执行 python 脚本。在研究了 Stack Overflow 和 Google 之后,我需要配置 Apache 以便能够运行 CGI 脚本。我见过很多可以完成此任务的软件示例,例如mod_wsgi。问题是我对这些软件的说明感到非常困惑,尤其是mod_wsgi。我根本不理解说明,我无法安装软件并获得任何工作。

如果有人有在 Apache 中执行 python 脚本的非常简单的方法,我将不胜感激。如果有人想解释如何使用 mod_wsgi,我也将不胜感激,因为目前我不知道如何使用它,而且安装说明让我很困惑。

【问题讨论】:

标签: python apache


【解决方案1】:

正如您所说,使用 CGI 是一种不那么简单但在某种程度上简单的方法。 您可以在Apache documentationPython CGI module documentation 找到更多信息。

但是,基本上,您必须将服务器设置为运行 cgi sripts。这是通过编辑 httpd.conf 或 .htaccess 文件来完成的: 对于第一个选项,添加或取消注释以下内容:

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ # update the second location according to your configuration. It has to be a place where apache is allow to use, otherwise see apache documentation for setting another directory.

然后,您只需在上面设置的目录中添加您的python脚本即可。

请注意,如 Apache 文档所述,脚本的输出必须以 mime 类型的标头开头。

因此,一个 hello world 脚本可以命名为 hello.py,其内容可以是:

#!/usr/bin/python
print('Content-type: text/html') # the mime-type header.
print() # header must be separated from body by 1 empty line.
print('Hello world')

然后,您可以从浏览器调用您的脚本:

http://localhost/cgi-bin/hello.py

请注意,Python 在其 cgi realted 内置模块中有一些好东西。 cgi 模块将为您提供一种处理表单的方法,而 cgitb 将为您提供一种有用的(但不是完美的)调试脚本的方法。有关更多信息,请再次阅读文档。

最后,直接使用 cgi 来运行 python 脚本为您提供了一种处理 http 请求的原始方式。有很多已经完成的框架,比如 flask 和 django,可以轻松地为您提供更多功能。你可以检查一下。

【讨论】:

  • 我在 /etc/apache2 中没有 httpd.conf 文件
  • @MIHAEL 取决于您的 Linux 发行版。 /etc/apache2/apache2.conf 或 /etc/httpd/httpd.conf。
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2018-07-25
  • 2015-01-10
  • 2023-03-28
  • 2015-09-05
相关资源
最近更新 更多