我试图遵循一些关于设置mod_python的Google搜索教程,但每次都失败。你有一个好的,一步一步的,坚如磐石的howto?如何设置Python脚本以在Apache 2.0中工作?
我的开发盒是OS X,生产 - Centos。
我试图遵循一些关于设置mod_python的Google搜索教程,但每次都失败。你有一个好的,一步一步的,坚如磐石的howto?如何设置Python脚本以在Apache 2.0中工作?
我的开发盒是OS X,生产 - Centos。
在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设置起来很麻烦。这是我做到的。
在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
重复每个Python程序的配置,你希望有下的mod_python运行。
你在UNIX或Windows上运行Python吗?
mod_python和FastCGI的替代方法是mod_wsgi。你可以在modwsgi
找到更多信息我已经在Solaris上构建并安装了它,没有任何问题。我之前曾尝试使用mod_python,但遇到了构建过程中共享库的问题。有good install docs可用。
对于我来说,问题并不在于Apache的设置,而在于了解mod_apache实际如何使用.py文件。模块级别的语句(包括if __name__=='__main__'
部分中的)是而不是执行 - 我认为在命令行运行脚本的stdout将是服务器将输出的内容,但这不是它的工作原理。
取而代之,我写了一个名为index()
的模块级函数,并将其作为字符串返回为页面的HTML。它也可能有其他的模块级功能(例如,otherFunction()
),可以进一步细分的URI被访问(例如,testScript/otherFunction
的文件testScript.py
。)
显然,这使得更多的意义比我原来的标准输出的概念。实际使用Python作为脚本语言,而不是使用大量标记语言的能力更强。
有关mod_python的信息已从Django项目网站中删除,因为他们现在推荐使用mod_wsgi,而不是 - https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/ – 2013-03-13 14:34:21