this link to chinese explaination for mod_python for apache
最近一直在看Python的书,深深被这种语言的优秀简练和有趣而打动,很是着迷。当然想把它用于Web开发,前面limodou兄写了把Python做为外部CGI的方法----不过有Apache的内部模块mod_python当然是用它了--优点多多
(如果你知道Mod_perl和FastCGI你就会明白。看看mod_python的官方数据:Performance Some very quick tests showed a very apparent performance increase: Platform: 300Mhz Pentium MMX (Sony Vaio PCG-505TR), FreeBSD Program: A script that first imported the standard library cgi module, then output a single word "Hello!". Measuring tool: ab (included with apache), 1000 requests. Standard CGI: 5 requests/s Cgihandler: 40 requests/s As a handler: 140 requests/s
还有个mod-snake据说可以把Python嵌在HTML中,fei下载了不过还没试,因为从sourceforge上看好象停止开发了:
(--网上并没有Apache与Mod_python整合的资料--所以fei自己动手并参考Mod_python的文档-总结出这篇文章--希望对大家有所帮助。 我使用的版本是Apache1.3.26,Python2.2.1,Mod_python2.7.8,平台redhat7.2(下载都可到
ftp://202.96.64.158/pub)在安装过程中还真遇到了不少麻烦-并不象以往Aache模块那么好装,虽然最后解决了--但还真是值得一写的。
1。先装好Apache1.3.26----正常装--可支持DSO,加上--enable-shared=max就行。--这步没什么好说的--不过Apache2.0还不支持,1.3也最好是1.3.20以上。如果你想把mod_python做为静态模块也是可以的--见后面。 2。装Python,这里要注意--最好不要使用线程,因为Apache1.3还不怎么支持线程。如果用了的话后来起动
Apache时会说Cannot load /root/apache1326/libexec/mod_python.so into server: /root/apache1326/libexec/mod_python.so: undefined symbol: pthread_sigmask--我是用Python源码装的--configure时加上了--without-threads选项,然后make,make install,最后最好设一下PATH和PYTHONPATH环境变量-使得python能被找到-否则如果Mod_python找不到库的话会有很多错误。这里要切记。 3。装Mod_python,这里先configure--注意有三个重要选项。--with-apxs找到apxs以生成DSO模块,--with-apache=这步就是用于生成静态模块了,在make后用make install_static生成,然后./configure --activate-module=src/modules/python/libpython.a-和PHP的安装方式差不多。不过我们一般还是用DSO方式,--with-python这步如果你按我说的设了环境变量的话就不用加了。configure后就make,注意make后要make install_py_lib,否则起Apache时会说undefined symbol:openpty,这步我想了很久。然后make install.
4.配Apache,加上LoadModule python_module libexec/mod_python.so
????AddModule mod_python.c,
再在你要用CGI的目录上设
AddHandler python-program .py
PythonHandler mptest PythonDebug On
AddHandler python-program .py
PythonHandler mptest PythonDebug On
重起Apache。
5。测试。最后在test目录中编写一个mptest.py,
内容如下:
from mod_python import apache
def handler(req):
req.send_http_header()
req.write("Hello World!")
return apache.OK
注意
last three lines