如何设置 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 中工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何设置别名或 VirtualHost 以在 Apache2 上运行 laravel 项目
如何使 Python 脚本独立可执行以在没有任何依赖项的情况下运行? [复制]