如何设置 Python 脚本以在 Apache 2.0 中工作?

Posted

技术标签:

【中文标题】如何设置 Python 脚本以在 Apache 2.0 中工作?【英文标题】:How do you set up Python scripts to work in Apache 2.0? 【发布时间】:2010-09-05 12:40:28 【问题描述】:

我尝试按照谷歌搜索的几个关于设置 mod_python 的教程,但每次都失败了。你有一个好的、循序渐进、坚如磐石的方法吗?

我的开发盒是 OS X,生产环境 - Centos。

【问题讨论】:

【参考方案1】:

在 Apache 上运行 Python 有两种主要方式。最简单的方法是使用 CGI 并编写普通的 Python 脚本,而第二种方法是使用 Django 或 Pylons 等 Web 框架。

使用 CGI 很简单。确保您的 Apache 配置文件设置了 cgi-bin。如果没有,请遵循他们的文档 (http://httpd.apache.org/docs/2.0/howto/cgi.html)。此时,您需要做的就是将 Python 脚本放在 cgi-bin 目录中,标准输出将成为 HTTP 响应。有关更多信息,请参阅 Python 的文档 (https://docs.python.org/library/cgi.html)。

如果你想使用 web 框架,你需要设置 mod_python 或 FastCGI。这些步骤取决于您要使用的框架。 Django 提供了关于如何使用 Apache 设置 mod_python 和 Django 的明确说明 (http://www.djangoproject.com/documentation/modpython/)

【讨论】:

有关 mod_python 的信息已从 Django 项目站点中删除,因为他们现在建议改用 mod_wsgi - docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi【参考方案2】:

是的,mod_python 的设置非常混乱。以下是我的做法。

在 httpd.conf 中:

LoadModule python_module modules/mod_python.so

<Directory "/serverbase/htdocs/myapp">
  AddHandler mod_python .py
  PythonHandler myapp
  PythonDebug On

在您的应用程序目录中:

$ /serverbase/htdocs/myapp$ ls -l
total 16
-r-xr-xr-x 1 root sys        6484 May 21 15:54 myapp.py

为您希望在 mod_python 下运行的每个 python 程序重复配置。

【讨论】:

【参考方案3】:

您是在 UNIX 还是 Windows 上运行 Python?

mod_python 和 FastCGI 的替代方案是 mod_wsgi。您可以通过modwsgi了解更多信息

我已经在 Solaris 上构建并安装了它,没有任何问题。我之前尝试过 mod_python,但在构建过程中遇到了共享库的问题。有good install docs 可用。

【讨论】:

【参考方案4】:

对我而言,问题不在于 Apache 的设置,而在于了解 mod_apache 实际如何使用 .py 文件。模块级语句(包括if __name__=='__main__' 部分中的语句) 被执行——我假设在命令行运行脚本的标准输出将是服务器将输出的内容,但事实并非如此它有效。

相反,我编写了一个名为 index() 的模块级函数,并让它以字符串的形式返回页面的 HTML。也可以有其他模块级函数(例如,otherFunction()),这些函数可以作为 URI 中的进一步段访问(例如,testScript/otherFunction 用于文件 testScript.py。)

显然,这比我最初的标准输出概念更有意义。更好地实际使用 Python 作为脚本语言而不是庞大的标记语言。

【讨论】:

以上是关于如何设置 Python 脚本以在 Apache 2.0 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加脚本任务以在 Bamboo 中运行 pytest

如何设置别名或 VirtualHost 以在 Apache2 上运行 laravel 项目

如何安装 pyspark 以在独立脚本中使用?

如何使 Python 脚本独立可执行以在没有任何依赖项的情况下运行? [复制]

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?

如何设置表格中的行高以在 python-docx 中修复?