2009年2月5日 星期四

[Windows] 安裝 mod_python (Apache/Python Integration) for Apache @ Windows XP

由於 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。


安裝順序:



  1. 安裝 Apache 2.2.x

    • 目前是挑 2.2.9 的安裝



  2. 安裝 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 吧!



  3. 安裝 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 Manualmod_python中文文档 。主要設定動作有兩項:



  • 2.3.2 Configuring Apache

    1. httpd.conf - LoadModule


      • 文件上這是 Unix 位置

        • LoadModule python_module libexec/mod_python.so



      • 最後我則是填以下位置,請參考 httpd.conf 就知道囉

        • LoadModule python_module modules/mod_python.so





    2. 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



    3. 設定完 httpd.conf 別忘了重跑 web server,接著就可試著連 http://localhost/mptest.py 啦!成功就會印出 "Hello World!"



第一次安裝並沒有很順利,因為我偷懶沒仔細看文件,發現以下三種現象



  • 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




1 則留言:

  1. 請問一下我照您的步驟做了,而我是用Apache/2.2.8 (Win32) mod_python/3.3.1 Python/2.5.5的我路徑設在www/willy_python/test.py
    它顯示出我無權access它,不知道是否有哪裡出問題,我系統是win XP

    回覆刪除