Apache+MySQL+Python+Django在Windows下環境搭建指南(Python Web環境搭建)
搭建一個簡單的Python的Web環境 之前一直都是採用PHP做Web伺服器環境,目前一個專案中需要用到python的一個第三方庫(Beautifual Soup ),但是又希望這個服務以Web服務形式提供,苦尋了好久,沒找到php中有對應的庫,只好另闢蹊徑,採用python來搭建一個web服務。
由於專案的需求對web服務要求很簡單,不涉及到複雜的網頁、session處理,在網上查了一圈,發現採用mod_python方式是最簡單的。基本上就是Apache + Python + mod_python的組合,mod_python是Apache和Python之間的橋樑。
本文所使用的軟體版本如下:
python-2.6.6.msi
apache_2.2.9-win32-x86-no_ssl-r2.msi
Django-1.2.tar.gz
mod_python-3.3.1.win32-py2.6-Apache2.2.exe
MySQL-python-1.2.2.win32-py2.6.exe
安裝步驟:
安裝注意事項 :mod_python對apache和python的版本都有比較嚴格的需求,所以安裝時需要找對正確的版本。我安裝的是 mod_python-3.3.1.win32-py2.6-Apache2.2 ,對應的python版本是2.6,Apache版本是2.2.
1.安裝
到python官方網站下載,如2.6.6。
Python在Windows上安裝後並沒有自動註冊環境變數,所以在命令列裡直接鍵入Python並不會啟動 Python命令列程式,此時需要在系統中註冊Python環境變數。
Python的安裝路徑為
C:\Python26
環境變數註冊:
我的電腦->屬性->高階->環境變數->系統變數
雙擊PATH項,修改PATH的值為
C:\Python26;
檢測是否安裝成功
執行-cmd,輸入python,如果順利進入python則說明安裝成功
2.安裝Django
http://tortoisesvn.sourceforge.net/ 下載tortoisesvn
簽出http://code.djangoproject.com/svn/django/trunk/django
Copy django 到 C:\Python26\Lib\site-packages\
Copy C:\Python26\Lib\site-packages\django\bin\django-admin.py 到 C:\Python26\Scripts。
cmd,鍵入python
>>>import django
>>>django.VERSION
>>>import django
>>>django.VERSION
新增系統環境變數:
C:\Python26\Lib\site-packages\django\bin;
正常應該可以看到django的版本資訊
Django也可以採用另外一種安裝方式:
建議用第二種方式,先配置好當前Python版本的環境變數,然後執行安裝指令碼。
3.安裝Apache Server
先從apache網站上下載版本,我下載的是Apache2.2.14 版本,安裝也基本上是一路預設設定,中間有一個步驟是填寫域名、管理員資訊的,隨便填一個就行了。還有一個步驟選擇所有人還是隻有當前使用者使用時,可以隨便選擇一個,二者就是埠的差別了。
安裝完畢後,選擇開始-->Apache HTTP Server 2.2-->Control Apache Server--> Start Apache in Console.啟動Apache Server.然後在瀏覽器中進行測試。http://localhost:8080(埠根據你的選擇有變化).如果一切正常應該會出現It Works字樣了。
apache server2.2下載地址:
4.安裝mod_python
下載mod_python . 安裝時會自動檢測到python的安裝位置。但是需要手動選擇apache的安裝位置。選擇到apache2.2這一層(我的電腦是C:\Program Files\Apache Software Foundation\Apache2.2).mod_python在python的lib目錄下增加了一些庫,同時在Apache的modules目錄下增加了mod_python.so庫。
Mod_python是apache 中支援Python CGI的模組。直接下載win32版的安裝程式安裝即可,我用的是Apache Mod_python 3.3.1。安裝程式會自己找到Python的安裝目錄,在Python的Lib\site-packagesib下增加目錄mod_python。
5.資料庫驅動程式安裝
Web程式如果需要訪問資料庫,必須安裝相應資料庫的驅動程式。我用的是MySQL資料庫,直接下載win32版安裝即可,我用的是MySQL-python-1.2.2.win32-py2.6.exe
。安裝程式會在Python的Lib\site-packagesib下增加目錄MySQLdb。
參考目錄:
配置apache
1. 增加mod_pythonmod_python不會自動修改配置檔案。要想apache知道如何解析.py檔案,就需要在apache的httpd.conf檔案中進行一些配置。在httpd.conf檔案中有一堆LoadModule命令,我們增加一行
#
#LoadModule logio_module modules/mod_logio.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule status_module modules/mod_status.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule python_module modules/mod_python.so
這一行,主要功能是載入mod_python.so庫。
2. 配置虛擬目錄。
類似於Apache伺服器的其他語言配置。在Httpd.conf檔案中增加一個目錄塊。
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/test ">
AddHandler mod_python .py
PythonHandler fetchpage
PythonDebug On
</Directory>
其中fetchpage是.py檔名
3. 編寫一個測試檔案。儲存在/htdocs/test目錄下,檔名和上面配置檔案中保持一致。
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!\n")
return apache.OK
在瀏覽器中輸入:http://localhost:8080/test/fetchpage.py.如果正常,應該就可以顯示Hello World的字樣了。