由於 lab 的機器似乎沒有安裝 mod_python ,雖然我想去編時卻發現有編過的足跡?最後,由於 lab 的機器還是少動為妙,再加上我也沒安裝的經驗,所以就在獻給 Windows XP 啦。
環境簡介:
- Windows XP with SP3
- apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi
- python-2.5.4.msi
- mod_python-3.3.1.win32-py2.5-Apache2.2.exe
首先,當然一樣是最新的 XP 啦,接著關於 Apache Web Server 的安裝,請參考 [Windows] 安裝 SVN for Apache @ Windows XP 前頭所提的,因為那時安裝完後就沒移除,所以這部我就跳過啦!比較重要的是安裝的版本是 Apache 2.2.x 這個訊息。
接著,就開始找一下 mod_python ,很高興地,不一會兒就找到了
比較需留意的,目前 mod_python 的版本是 3.3.1 版,其提供 3 種 python 版本結合
- mod_python-3.3.1.win32-py2.3-Apache2.0.exe
- mod_python-3.3.1.win32-py2.3-Apache2.2.exe
- mod_python-3.3.1.win32-py2.4-Apache2.0.exe
- mod_python-3.3.1.win32-py2.4-Apache2.2.exe
- mod_python-3.3.1.win32-py2.5-Apache2.0.exe
- mod_python-3.3.1.win32-py2.5-Apache2.2.exe
由於上述的環境是安裝 Apache 2.2.9 ,因此就挑選上述支援最新的 Python 2.5 with Apache 2.2.x。
安裝順序:
- 安裝 Apache 2.2.x
- 目前是挑 2.2.9 的安裝
- 安裝 Python 2.5.x
- 在 Python - Release 中,2.5.x 系類最新是 2.5.4 版
- 附帶一提的,若是選擇安裝 mod_python with Python 2.3 時,Python 網站上僅提供至 2.3.5 的 Windows 安裝檔,儘管最新版是 Python 2.3.7 版。因此,選擇時需留意有沒 Windows 安裝版囉,沒有的話,應該就是自己編吧 XD 不曉得沒有的主因是不是該版本退潮流了?建議安裝選擇最新的吧!在此 mod_python 僅支援到 2.5.x ,所以就挑 2.5.4 吧!
- 安裝 mod_python
- mod_python-3.3.1.win32-py2.5-Apache2.2.exe
- 安裝過程中,會自行偵測是否安裝 Python 2.5 ,另外也會問 Apach 2.2.x 安裝在哪,以我的情況,我記得我安裝 Apache 時都選預設,所以目錄是在 "C:\Program Files\Apache Software Foundation\Apache2.2"
以上順序跑完一遍就等於完成 90% 了!接著就設定 Apache 的動作啦
設定 Apache 也不難,請參考 Mod_python Manual 或 mod_python中文文档 。主要設定動作有兩項:
- 2.3.2 Configuring Apache
- httpd.conf - LoadModule
- 文件上這是 Unix 位置
- LoadModule python_module libexec/mod_python.so
- 最後我則是填以下位置,請參考 httpd.conf 就知道囉
- LoadModule python_module modules/mod_python.so
- 文件上這是 Unix 位置
- httpd.conf & mptest.py
- 設定 web 根目錄來測試
在 <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"> 中加入AddHandler mod_python .py
PythonHandler mptest
PythonDebug On - 接著到 C:/Program Files/Apache Software Foundation/Apache2.2/htdocs 建立 mptest.py 檔案,內容:
from mod_python import apache
def handler(req):
req.write("Hello World!")
return apache.OK
- 設定 web 根目錄來測試
- 設定完 httpd.conf 別忘了重跑 web server,接著就可試著連 http://localhost/mptest.py 啦!成功就會印出 "Hello World!"
- httpd.conf - LoadModule
第一次安裝並沒有很順利,因為我偷懶沒仔細看文件,發現以下三種現象
- ImportError: No module named mptest
- 此主因是路徑相關的問題,恰恰好我這次只是因為建立 mptest.py 時,我把他建立成 test.py ,因此連到 http://localhost/test.py 時就會蹦出這個訊息!這個是跟在 httpd.conf 上設定的 mptest 有關吧!只能說自己亂玩沒照規矩建檔案。
- ImportError: No module named _apache
- 這個訊息是因為我無聊透過 cmd 執行 # python test.py (就是上敘 mptest.py ) 時發現的訊息,後來 Google 的結果應該也是類似說在執行時並未透過 mod_python 的關係,因此,還是不要亂玩得好。
- 無法綁定 Port 80 ( cannot bind 80 port for apache web server )
- 就是我的 Web Server 一直無法正常啟動,我記得我沒安裝過什麼軟體綁在 port 80,當下就馬上 telnet localhost 80 ,發現還真正連得上,然後亂打字還會有訊息!當時心想該不會被黑了吧?!正當我遲疑 30 秒正準備掃毒,我想到了一種可能性,那就是 skype 啦!果真關掉 skype 就可以正常綁在 port 80 啦 XD
請問一下我照您的步驟做了,而我是用Apache/2.2.8 (Win32) mod_python/3.3.1 Python/2.5.5的我路徑設在www/willy_python/test.py
回覆刪除它顯示出我無權access它,不知道是否有哪裡出問題,我系統是win XP