方案 :Flask + mod_wsgi + Apache
Flask: 一個(gè)Python的web框架
mod_wsgi: 一個(gè)為Python編寫的Apache的FastCGI模塊
Apache: 一個(gè)類似于IIS的Web服務(wù)器
!!!注意 !!!
如果下面這一點(diǎn)沒有做到,整個(gè)過程有99%的可能性會(huì)失敗。
Apache,mod_wsgi和Python都必須用相同版本的C/C++編譯器生成,它們要么是32位的,要么是64位的,不能混用。
因?yàn)槲覐腜ython官方站點(diǎn)上下載的Python 3.4就是32位的,并且是用VC10編譯出來的。因此在下載Apache和mod_wsgi時(shí),也必須選擇32位的用VC10編譯出來的版本。
步驟
1.安裝Apache
2.安裝mod_wsgi
3.安裝Python
4.安裝Flask
5.創(chuàng)建測(cè)試Web App
6.在Apache中配置站點(diǎn)
最后 : 測(cè)試
- 安裝Apache
Apache是開源軟件,針對(duì)windows環(huán)境,它不直接提供編譯版本。
可以在http://www.apachelounge.com/download/ 下載適合自己環(huán)境的版本。
根據(jù)我自己當(dāng)前的環(huán)境,我選擇的是Win32 VC10編譯出來的Apache2.4版本
將壓縮包下載到本機(jī),然后將壓縮包里面的Apache24文件夾拷貝到C:\。
當(dāng)然,你可以拷貝到你的系統(tǒng)的任何位置,但Apache的默認(rèn)配置是C:\Apache24。
如果你本機(jī)運(yùn)行了IIS,將其關(guān)掉。因?yàn)镮IS和Apache都默認(rèn)用的是80端口。如果你想配置其它端口,我相信那也不難。等把Flask部署成功后再來搗鼓吧。
打開cmd
cd c:
cd Apache24\bin
httpd
可能遇到以下錯(cuò)誤:
win10裝最新版的apache2.4,啟動(dòng)時(shí)應(yīng)用程序無法正常啟動(dòng)(0xc000007b)
解決辦法: http://ask.csdn.net/questions/248749
然后打開瀏覽器,輸入
http://localhost
如果網(wǎng)頁上顯示 It Works! ,那說明apache服務(wù)器運(yùn)行起來了。
2.安裝mod_wsgi
下載mod_wsgi,google上的發(fā)布的版本沒有時(shí)候python3.4的,因此需要到
http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下載
因?yàn)槲沂莗ython3.4且選擇的apache24 vc10編譯的版本,因此下載的mod_wsgi選擇的是紅框里面的內(nèi)容。
下載下來的whl文件,我們將其解壓(修改后綴為zip,然后解壓,好方法),可以在里面兩個(gè)文件夾中找到一個(gè)名為mod_wsgi.so的文件,將其復(fù)制到apache24/modules 中。
打開 c:\Apache24\conf\httpd.conf 添加如下配置
LoadModule wsgi_module modules/mod_wsgi.so
這個(gè)時(shí)候就運(yùn)行一下apache,
打開cmd
cd c:
cd Apache24\bin
httpd
如果沒有報(bào)錯(cuò)的話就證明配置成功,如果出錯(cuò)的話就檢查一下自己apache版本和mod_wsgi是不是同一個(gè)VC編譯的,一般都在這里出錯(cuò)的,具體的錯(cuò)誤可以通過apache logs文件中的error.log來查看。?
3 . 安裝Python
我在這里安裝的是Python 3.4,默認(rèn)安裝在c:\Python34\ 目錄下。
Python 3.4安裝時(shí),最好選擇將Python添加到系統(tǒng)目錄。安裝完成后就可以直接運(yùn)行Python的相關(guān)程序了,例如下面安裝flask時(shí)用到的pip
這里要配置python的運(yùn)行環(huán)境,配置方法環(huán)境網(wǎng)上有的是,但是配置路徑一定寫完整
4 . 安裝flask
直接打開cmd,運(yùn)行如下命令
pip install flask
它會(huì)自動(dòng)將flask和flask依賴的兩個(gè)庫全部裝上,這太方便了。
失敗了重新安裝
耐心點(diǎn),總會(huì)安裝好。(吐槽下騰訊云服務(wù)器,網(wǎng)速20-30kb/s)
5 . 創(chuàng)建Web App
下面的代碼直接拷貝而來
創(chuàng)建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()
編輯最好用vim。
創(chuàng)建C:\Test_Web\test.wsgi
import sys
#Expand Python classes path with your app's path
sys.path.insert(0, "C:/Test_Web") #app.py(這里是test.py)所在的路徑一定要正確
from manage import app
#Put logging code (and imports) here ...
#Initialize WSGI app object
application = app (別改)
注意,application一定不能改成別的。因?yàn)閙od_wsgi在解析這個(gè)文件時(shí),只認(rèn)application。
6 . 在Apache中配置站點(diǎn)
在c:\Apache24\conf\httpd.conf 中:
找到httpd-vhosts.conf一行,確認(rèn)去掉頭部的#,如果沒有則自己添加。Include etc/extra/httpd-vhosts.conf
然后
在c:\Apache24\conf\extra\httpd-vhosts.conf
這個(gè)文件里面一般都是使用#注釋掉了。
在最后添加以下代碼
<VirtualHost *:8000>
ServerName 123.216.226.46
DocumentRoot C:/Test_Web/
WSGIScriptAlias / C:/Test_Web/test.wsgi
<Directory C:/Test_Web/>
Require all granted
Require host ip
Allow from all
</Directory>
</VirtualHost>
注意路徑是否正確
一點(diǎn)解釋:
DocumentRoot C:/Test_Web/ :?jiǎn)?dòng)文件目錄
WSGIScriptAlias / C:/Test_Web/test.wsgi : wsgi文件目錄
ServerName:外網(wǎng)IP地址
VirtualHost *:8000端口(這里要注意,c:\Apache24\conf\httpd.conf中是否監(jiān)聽了你這個(gè)端口)
截圖如下
- 測(cè)試
現(xiàn)在,打開瀏覽器,輸入 http://你的IP地址(localhost也可以)/hello?name=xxx
如果你看見網(wǎng)頁上出現(xiàn) Hello xxx! 說明你的站點(diǎn)運(yùn)行起來了。
以上內(nèi)容就是我的部署過程,真心累,跟linux相比,Windows太麻煩了。有不足之處,歡迎指正
參考鏈接:
http://blog.csdn.net/firefox1/article/details/46438769
Flask + mod_wsgi + Apache on Windows 部署成功(隨時(shí)接受提問)
http://blog.sina.com.cn/s/blog_6315541b0102wemd.html
windows下python3.x + apache + mod_wsgi + virtualenv部署flask應(yīng)用