fei最近一直在看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的目錄上設
<Directory /some/directory/htdocs/test>
AddHandler python-program .py
PythonHandler mptest
PythonDebug On
</Directory>
重起Apache。
5。測試。最後在test目錄中編寫一個mptest.py,內容如下:
from mod_python import apache
def handler(req):
req.send_http_header()
req.write("Hello World!")
return apache.OK
注意一定要小心縮進--否則會產生異常!然後訪問test/mptest.py如果看到Hello World!
那就恭喜你大功告成了!
如果在安裝過程有未知問題,請與fei聯系
[email protected],對於mod_python更詳細的用法和說明可見http://www.modpython.org/live/mod_python-2.7.8/doc-html/
我目前每天在學Oracle8i和Java2-Oracle DBA和Sun CSA,SCEA是我的奮斗目標-為了DBA和SCEA堅定不疑努力著