windows10上使用apache部署python flask專案
阿新 • • 發佈:2019-01-27
由於需要在學校機房部署,所以必須選擇windows系統。
本人電腦win10
需要清楚的事情:
- 生產環境所使用的python的版本,從cmd中進入python後,版本資訊將列印在cmd中。本人使用的為32位的py3.5 on win32
下載Apache
- 下載連結
- 選擇apache版本。我選擇的版本為Apache 2.4.29 Win32。
- 下載後將解壓資料夾放到c盤根目錄下。可以放到其他目錄下,需要更改對應配置。
- 通過cmd進入Apache目錄,如我的放在c盤:
cd c:\
cd Apache24\bin
- 繼續在cmd中輸入httpd啟動伺服器,開啟瀏覽器訪問
- 如果現實It works!證明伺服器成功執行。
- 否則,最有可能的原因為埠被佔用,apache預設監聽80埠。此時進入C:\Apache24\conf用編輯器開啟httpd.conf,使用ctrl+f搜尋Listen,將後面的80改為其他埠,推薦改為大於1024的埠,本人改為8090。
- 或者,其他原因導致不能執行,請自行解決。
mod_wsgi
- mod_wsgi是什麼?文件地址
The mod_wsgi package provides an Apache module that implements a WSGI compliant interface for hosting Python based web applications on top of the Apache web server.
- 安裝mod_wsgi。查閱了很多部落格,實踐發現下載的mod_wsgi解壓後不是mod_wsgi.so,而是.whl檔案,恍然大悟,猜測可以直接用pip安裝。實踐證明是正確的。可以直接
pip install mod_wsgi
安裝。 使用pip安裝後,使用cmd進入python目錄下的Scripts資料夾, Scripts的位置可以參考:
python所在碟符:\xxx\xxx\Python\Python35-32\Scripts
輸入
mod_wsgi-express module-config > myconfig.txt
這裡將資訊重定向到了Scripts資料夾下的myconfig.txt,開啟這個txt檔案,將裡面的資訊複製到httpd.conf資料夾中。
txt中的資訊為一下格式:
在Apache中配置站點
- 在webapp同級的目錄下編寫以下python程式碼,命名為test.wsgi,這是實現apache和webapp連線的前提。
import sys
sys.path.insert(0, "C:/Users/Administrator/20171114/myblog")
from manage import app
application = app
我的檔案結構如下:
----|20171114 (資料夾)
--------|myblog (資料夾)
------------|app (資料夾)
------------|manage.py (檔案)
------------|test.wsgi (檔案)
其中app資料夾包含了webapp的邏輯實現。看過flask狗書的人應該瞭解,狗書中使用flask-Scripts來支援命令列選項,編寫了manage.py來管理webapp的啟動選項.其中包含了一個Flask類物件,這個物件即wsgi應用,一般起名為app,在test.wsgi中匯入app,重新命名為application。
-更改httpd.conf
<VirtualHost *:8090 >
ServerAdmin "127.0.0.1"
DocumentRoot "C:/Users/Administrator/20171114/myblog"
<Directory "C:/Users/Administrator/20171114/myblog">
Require all granted
Require host ip
Allow from all
</Directory>
WSGIScriptAlias / C:/Users/Administrator/20171114/myblog/test.wsgi
</VirtualHost>
其中8090為我們設定的埠,DocumentRoot為webapp所在目錄,WSGIScriptAlias為test.wsgi所在目錄。根據自己專案,更改對應配置。
執行
- 重新使用httpd命令執行伺服器
- 在伺服器中輸入http://localhost:埠號/你實現的路由。如本人實現了一個路由
/
,訪問http://localhost:8090/
即可。
歡迎提問及指出問題,相互交流,相互進步。