Windows下Flask+Apache+mod_wsgi部署Flask專案
想在Windows上部署Flask。參照了網上好多教程,終於配好了。
必要條件:
1: python環境
2:apache伺服器
3:mod_wsgi
下面是我的機子的環境:
python:python3.6.
apache伺服器:
這裡有好多坑:我一直部署不成功,感覺跟我下載的版本有關:但是我也不清楚哪裡有問題。
我是64位 win10系統:
2:解壓檔案並將解壓出的“apache24”放到C盤根目錄:
C盤根目錄:
如果你不想放在C盤。可以修改配置檔案:Apache24\conf\httpd.conf :修改其中的如圖所示處:
3:接下來測試一下伺服器,看是否能正常執行:開啟cmd。 切換到 Apache24\bin 執行httpd.exe,如果能正常執行就是:
可能會出現如下圖的警告:AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::842:1c5:da2d:ba3a. Set the 'ServerName' directive globally to suppress this message :這個不影響伺服器執行。你可以修改 配置檔案:Apache24\conf\httpd.conf 。指明你的ServerName。
4:開啟伺服器後: 開啟瀏覽器:輸入 localhost :可以看到:it work! 你就成功了。
二:接下來把 mod_wsgi 新增到apache 伺服器中:
這裡 也有我疑惑的地方。我下載的 apache 是vc10的版本。但是我在配置時,我下載的 mod_wsgi 是VC14的版本,竟然最後成功了:根據自己的下載響應的版本。並將whl 中 的 mod_wsgi.pyd 提取出來。
2:將提取出來的檔案放到 Apache24\modules 中:
3:修改配置檔案 Apache24\conf\httpd.conf :新增:
LoadModule wsgi_module modules/mod_wsgi.pyd
4:到了激動人心的時刻了。重啟一下apache伺服器,看是否有報錯。如果沒有 ,說明成功了。
這裡 我碰到的問題就是。我使用 mod_wsgi-4.5.24+ap24vc10-cp34-cp34m-win_amd64.whl 提取出來的mod_wsgi 無法啟動服務:但是可以使用 mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl 提取出來的盡然可以成功執行伺服器。 可能這個要求的python版本比較嚴格,對CV的版本不是很嚴格??我也是測試出來的。
三:接下來就是 部署Flask :
1:首先寫一個最簡單的Flask 應用,並進行釋出:這裡在跟 apache24 同一目錄下也就是 C盤根目錄下:建立mydir目錄。在目錄中寫兩個檔案:hello.py 和myapp.wsgi:
hello.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!終於成功了。我擦"
if __name__ == '__main__':
app.run()
myapp.wsgi:
import sys
sys.path.insert(0, 'c:\\mydir')
from hello import app as application
這裡的 application 必須是這個。伺服器只看這個。
2:修改配置檔案:Apache24\conf\httpd.conf 新增幾行:
<VirtualHost *:80>
WSGIScriptAlias /myapp c:\mydir\myapp.wsgi
<Directory c:\mydir>
Require all granted
</Directory>
</VirtualHost>
3:到此。所有配置已 填寫完畢。
.