最近開發了一個 Google Analytics 相關的應用,但需要在 Windows 下部署,結合網上的相關經驗,最終選擇了 apache+mod_wsgi 這樣的配置。
修改python應用
代碼如下:
Note that mod_wsgi requires that the WSGI application entry point be called 'application'. If you want to call it something else then you would need to configure mod_wsgi explicitly to use the other name.
(via: wiki)
因為 mod_wsgi 預設要求入口名稱為 application 所以我們需要對自己的 python web 應用做一些修改。
假設我們使用flask 搭建的應用,而預設的入口名稱為 app, 建立一個 wsgi_handler.wsgi
import sys, ossys.path.insert(0, os.path.dirname(__file__)) from application import app as application
下載安裝 httpd
應用的入口修改好之後,就需要安裝 apache 和 mod_wsgi 了,我使用的是32位的系統,64位系統下載的安裝包可能 與32位的不同。
開啟頁面 http://apache.dataguru.cn//httpd/binaries/win32/,下載 httpd-2.2.22-win32-x86-no_ssl.msi, 下載後運行程式,按提示安裝,具體過程這裡不詳述。
安裝並配置 mod_wsgi
目前 Windows 下對 python 支援的最好的應該就是 [mod_wsgi][mw] 了。
下載 https://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so
將下載的檔案重新命名為 mod_wsgi.so 後移動到 apache 的 modules 目錄:
在 conf/httpd.conf 中加入如下配置
代碼如下:
LoadModule wsgi_module modules/mod_wsgi.so
配置應用 vhost
在 conf/httpd.conf 中啟用 vhosts 設定檔
代碼如下:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
編輯 conf\extra\httpd-vhosts.conf 刪除無效的範例程式碼,並加入應用的配置
代碼如下:
NameVirtualHost *:5000
ServerName localhost
WSGIScriptAlias / E:\Projects\ga-data\wsgi_handler.wsgi
Order deny,allow
Allow from all
其中 E:\Projects\ga-data 替換成應用真實的路徑,盡量避免將應用放在中文或者有包含空格的路徑中
接下來啟動 Apache 並訪問 http://localhost:5000 即可。