2008-08-07 89 views

回答

12

在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/

+2

有关mod_python的信息已从Django项目网站中删除,因为他们现在推荐使用mod_wsgi,而不是 - https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/ – 2013-03-13 14:34:21

8

是的,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运行。

5

你在UNIX或Windows上运行Python吗?

mod_python和FastCGI的替代方法是mod_wsgi。你可以在modwsgi

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

0

对于我来说,问题并不在于Apache的设置,而在于了解mod_apache实际如何使用.py文件。模块级别的语句(包括if __name__=='__main__'部分中的)是而不是执行 - 我认为在命令行运行脚本的stdout将是服务器将输出的内容,但这不是它的工作原理。

取而代之,我写了一个名为index()的模块级函数,并将其作为字符串返回为页面的HTML。它也可能有其他的模块级功能(例如,otherFunction()),可以进一步细分的URI被访问(例如,testScript/otherFunction的文件testScript.py。)

显然,这使得更多的意义比我原来的标准输出的概念。实际使用Python作为脚本语言,而不是使用大量标记语言的能力更强。