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></directory> AllowOverride?none Require?all?denied
修改后:
<directory></directory> Options?FollowSymLinks AllowOverride?None Order?deny,allow Allow?from?all
4、修改文檔根路徑為自己的文件路徑
DocumentRoot?"c:/Apache24/htdocs" <directory></directory>
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.</virtualhost></virtualhost>
因為我是一個不是很懂配置apache的人,我一開始看到參考鏈接中的配置
將下面這段復制到conf文件的最底部,并且修改路徑為自己的路徑
<virtualhost> ServerAdmin?example@xx.com DocumentRoot?E:EnvironmentApacheApache24text_web <directory> Order?allow,deny Allow?from?all </directory> WSGIScriptAlias?/?E:EnvironmentApacheApache24text_webtest.wsgi </virtualhost>
上面的站點配置說明:
(1)項目路徑(不一定要放在apache目錄下):
DocumentRoot?E:EnvironmentApacheApache24text_web
(2)wsgi模塊啟動文件(重點):
WSGIScriptAlias?/?E:EnvironmentApacheApache24text_webtest.wsgi
注意:這里的“/”是必須的,表示url前綴,后面可以根據需求修改。
(3)項目路徑權限:設置為允許全部
<directory> 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的錯誤輸出日志。錯誤輸出日志在Apache24logsError.lo