前言
說是前言,純粹就是吐槽。
假設你趕時間。全然能夠跳過這部分,我保證不會在這里隱藏不論什么實用的內容。
人上年紀后。可能沖勁不足,我花了大概兩周的時間才成功的將flask部署到windows上。還好沒有放棄,終於找到了答案。
只是這也說明我在開源軟件的應用和配置上還非常差勁呀,當我看到要用VC10的C/C++編譯器編譯源碼時,頭都大了。你說我們這些平時習慣了Vistual Studio編譯的。哪還懂什么make命令呀。
還好網上什么都有,連幫你編譯的都有,因此,編譯這一難沒有經歷。
對於flask這種開源軟件來說,部署總是有多種選擇。我如今吐槽一下我試過的,但沒有成功的經歷。
- PyISAPIe + IIS
- CGI + IIS (盡管配置成功,可是不能解析wsgi)
- FastCGI + Nginx
- FastCGI + Lighttpd (須要cygwin進行編譯)
參考
終於方案
!!
之前我就是沒有注意到這個問題,所以導致一直沒有成功安裝。
Windows下的編譯器。參見: http://www.microsoft.com/express/vc/
步驟
- 安裝Apache
- 安裝mod_wsgi
- 安裝Python
- 安裝Flask
- 創建測試Web App
- 在Apache中配置網站
- 測試
1. 安裝Apache
能夠在http://www.apachelounge.com/download/ 下載適合自己環境的版本號。
將壓縮包下載到本機,然后將壓縮包里面的Apache24目錄復制到C:\。
當然,你能夠復制到你的系統的不論什么位置,但Apache的默認配置是C:\Apache24。
假設你本機執行了IIS。將其關掉。由於IIS和Apache都默認用的是80port。假設你想配置其他port。我相信那也不難。等把Flask部署成功后再來搗鼓吧。
打開cmd
>cd c:\
>cd Apache24\bin\
>httpd
然后打開瀏覽器,輸入
http://localhost
假設網頁上顯示 It Works! ,那說明apacheserver執行起來了。
2. 安裝mod_wsgi
從以下這個鏈接下載mod_wsgi
這個包里面包括了32位和64位的編譯版本號。下載完畢后選擇
將mod_wsgi-py34-VC10.so拷貝至C:\Apache24\modules\下,並更名為mod_wsgi.so。
打開 c:\Apache24\conf\httpd.conf 加入例如以下配置
LoadModule wsgi_module modules/mod_wsgi.so
從新啟動httpd,假設沒有報錯。說明mod_wsgi模塊在apache里面載入成功了。
3. 安裝Python
Python 3.4安裝時。最好選擇將Python加入到系統文件夾。安裝完畢后就能夠直接執行Python的相關程序了,比如以下安裝flask時用到的pip
4. 安裝flask
直接打開cmd。執行例如以下命令
pip install flask
它會自己主動將flask和flask依賴的兩個庫所有裝上,這太方便了。
5. 創建Web App
創建C:\Test_Web\test.py
from flask import Flask, request app = Flask(__name__) @app.route('/hello') def hello_world(): name = request.args.get('name','') return 'Hello ' + name + '!' if __name__ == '__main__': app.run()
創建C:\Test_Web\test.wsgi
import sys #Expand Python classes path with your app's path sys.path.insert(0, "c:/Test_Web") from test import app #Put logging code (and imports) here ... #Initialize WSGI app object application = app
注意,application一定不能改成別的。
由於mod_wsgi在解析這個文件時,僅僅認application。
另外。同IIS不同的時,不須要給C:\Test_Web目錄增加NETWORK SERVICE用戶的訪問權限。
6. 在Apache中配置網站
<VirtualHost *:80 > ServerAdmin example@company.com DocumentRoot c:\Test_Web <Directory "c:\Test_Web"> Order allow,deny Allow from all </Directory> WSGIScriptAlias /flasktest c:\Test_Web\test.wsgi </VirtualHost>
我對Apache的配置純粹是外行。
我的理解是一個VirtualHost節點就相當於在IIS里面的一個Web Site節點。
假設我的理解有誤,還望各位路過的Apache配置高手糾正。
我在研究的過程中還看見有人將網站的配置放在另外一個conf文件里。然后將其包括至httpd.conf。
7. 測試
假設你看見網頁上出現 Hello CZY! 說明你的網站執行起來了。
剩下的工作就是以當前的工作為原型,開始Python的Web App開發之旅吧。
假設你在嘗試的過程中遇到什么問題。請給我隨時在CSDN上留言。