要在Windows平台的Apache中使用Python,當然必須得先安裝Apache和Python。Apache我使用的是XAMPP,而Python則隨便一搜,就可以找到下載連結。由於這個解決方案要通過安裝Apache模組mod_python來實現,而mod_python的目前的版本3.3.1隻支援Apache 2.2和Python 2.5,所以不得不先缷載已經裝好的Python 3.0,重新下載安裝了Python 2.7。mod_python是一個Apache模組,它可以將Python解譯器嵌入到Apache伺服器中(詳情可以看這裡)。
讓Apache支援Python的過程很簡單,只要3步。
- 下載mod_python模組安裝程式(注意檔案名稱後面Python和Apache的版本號碼要與自己已經安裝的版本一致;檔案名稱前面的版本號碼則是mod_python的,檔案名稱樣本:mod_python-3.3.1.win32-py2.5-Apache2.2.exe),然後安裝,安裝嚮導會自動找到Python路徑,但可能需要我們手工指定Apache路徑,安裝到最後,嚮導還會提示你如何修改Apache設定檔(參見下一步)並給出了後續步驟的英文說明。
- 讓Apache載入mod_python模組。在Apache安裝目錄下找到其設定檔apache/conf/httpd.conf,開啟,搜“LoadModule”,找到載入模組的地方,然後添加一條語句:LoadModule python_module modules/mod_python.so,重新啟動Apache。
- 在htdocs目錄下建立一個目錄,如:“py”。進入py目錄,建立一個文字檔,並命名為“.htaccess”,加入下列3條指令:
1 |
AddHandler mod_python .py |
這裡第一條指令是將所有URL末尾為.py的請求轉寄給mod_python處理常式,mod_python接收到請求之後再尋找適當的PythonHandler處理常式。第二條指令只定義了一個mptest處理常式。最後一條是啟用Python代碼調試功能,以便在代碼運行出錯時輸出Python解譯器返回的錯誤。
完成以上3步之後,就可以編寫Python檔案並進行測試了。在py目錄下建立 mptest.py 檔案,開啟後添加如下代碼:
1 |
from mod_python import apache |
4 |
req.content_type = 'text/plain' |
5 |
req.write( "Hello World!" ) |
儲存。開啟瀏覽器,輸入http://localhost/py/mptest.py,斷行符號。看到“Hello World!”了嗎?
實際上,由於前面只明確將mptest設定為處理常式,所以無論瀏覽器URL中的.py檔案名稱是什麼(如:login.py、default.py),都將被轉寄給mptest.py檔案來處理,都會返回“Hello World!”。怎麼辦呢?長話短說,可以將上面第3步中的代碼替換成如下所示:
1 |
AddHandler mod_python .py |
2 |
PythonHandler mod_python.publisher |