flask自帶的開發Web伺服器表現很差,回應慢,而且直接透過nginx進行反向代理,經常無法回應要求。有兩個可以在生產環境中使用、效能良好且支援Flask程式的伺服器,分別是Gunicorn和uWSGI,但這兩個模組並沒有提供對window的支援。
因此我們需要使用mod_wsgi這個模組使得flask能夠在apache上部署,mod_wsgi模組是一個python寫的Apache的FastCGI模組。 (建議學習:apache使用)
下載完畢後解壓縮得到Apache24,打開進入conf文件,用文字打開,我這裡採用Atom打開。
現在說明一下,我們需要修改的地方:
1、ServerRoot "c:/Apache24":修改成自己的目錄位址
2、Listen 8080:連接埠號配置,部分使用者可能會發現自己的80埠佔用,可能是IIS或SQLserver佔用,我們可以透過修改這個連接埠號,方便測試
3、修改目錄授權
原本的:
<Directory /> AllowOverride none Require all denied </Directory>
修改後:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory>
4、修改文件根路徑為自己的檔案路徑
DocumentRoot "c:/Apache24/htdocs" <Directory "c:/Apache24/htdocs">
5、mod模組配置(重點)
# (1)首先對下載下來的mod.whl檔案進行安裝:
pip install
(2)安裝成功後,執行下面的命令:
mod_wsgi-express module-config
(3)上面這條指令成功運行後,我們可以得到三個訊息:
(4)然後使用這三個訊息代替.so文件,加入到apache的設定文件中:
6、設定網站(重點):
# <VirtualHost> definition. These values also provide defaults for # any <VirtualHost> containers you may define later in the file.
因為我是一個不是很懂設定apache的人,我一開始看到參考連結中的設定不知道放在哪裡,所以可以通過全文搜索,搜到了這句話,我可以確定將這個
將下面這段複製到conf檔案的最底部,並且修改路徑為自己的路徑
<VirtualHost *:8080 > ServerAdmin example@xx.com DocumentRoot E:\Environment\Apache\Apache24\text_web <Directory "E:\Environment\Apache\Apache24\text_web"> Order allow,deny Allow from all </Directory> WSGIScriptAlias / E:\Environment\Apache\Apache24\text_web\test.wsgi </VirtualHost>
上面的網站設定說明:
(1)專案路徑(不一定要放在apache目錄下):
DocumentRoot E:\Environment\Apache\Apache24\text_web
(2)wsgi模組啟動檔(重點):
WSGIScriptAlias / E:\Environment\Apache\Apache24\text_web\test.wsgi
注意:這裡的「/」是必須的,表示url前綴,後面可以依需求修改。
(3)專案路徑權限:設定為允許全部
<Directory "E:\Environment\Apache\Apache24\text_web"> Order allow,deny Allow from all </Directory>
到這裡我們的httpd.conf檔案已經設定完成了。
二、下方進入flask專案的設定:
專案目錄:
1 、test.wsgi檔說明:
import sys sys.path.insert(0, "E:/Environment/Apache/Apache24/text_web") #项目路径
from test import app #將我們的flask項目project名引入
application = app #applcation一定不能改成別的,因為wsgin在解析這個文件時,只認applcation(參考連結)
2、flask的主文件
from flask import Flask app = Flask(__name__) @app.route('/hello') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
到此,我們的專案配置基本上完成,這裡特別需要注意的是在wsgi檔中的項目引入。
三、啟動或安裝apache
啟動管理員模式的cmd進入到Apache24的bin檔案路徑下:
安裝apache為系統服務:
httpd -k install
啟動apache:
httpd -k start
我發現有的電腦可以直接透過開啟httpd.exe直接執行,而不需要將httpd安裝入系統服務。
其他可能用到的apache指令:
停止apache服務:
httpd -k stop
重啟apache服務:
httpd -k restart
至此,我們的flask專案透過wsgi模組搭建在apache服務已經完成建置完成,開啟localhost:8080/hello,看是否出現helloworld,如果發現專案仍然沒有設定成功,請留意apache的錯誤輸出日誌。錯誤輸出日誌在\Apache24\logs\error.lo
以上是flask怎麼結合apache的詳細內容。更多資訊請關注PHP中文網其他相關文章!