flask怎么結合apache

flask自帶的開發web服務器表現很差,響應慢,而且直接通過nginx進行反向代理,經常無法響應請求。有兩個可以在生產環境中使用、性能良好且支持flask程序的服務器,分別是gunicorn和uwsgi,但是這兩個模塊不提供對window的支持。

flask怎么結合apache

因此我們需要使用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)上面這條命令成功運行后,我們可以得到三條信息:

flask怎么結合apache(4)然后使用這三條信息代替.so文件,加入到apache的配置文件中:

flask怎么結合apache6、配置站點(重點):

#?<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項目的配置:

項目目錄:

flask怎么結合apache

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

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享