1. 程式人生 > >windows10上使用apache部署python flask專案

windows10上使用apache部署python flask專案

由於需要在學校機房部署,所以必須選擇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啟動伺服器,開啟瀏覽器訪問
    http://localhost
  • 如果現實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/即可。

歡迎提問及指出問題,相互交流,相互進步。