溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

flask如何結(jié)合apache

發(fā)布時間:2020-09-16 09:55:57 來源:億速云 閱讀:282 作者:小新 欄目:建站服務(wù)器

這篇文章主要介紹了flask如何結(jié)合apache,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

flask自帶的開發(fā)Web服務(wù)器表現(xiàn)很差,響應(yīng)慢,而且直接通過nginx進(jìn)行反向代理,經(jīng)常無法響應(yīng)請求。有兩個可以在生產(chǎn)環(huán)境中使用、性能良好且支持Flask程序的服務(wù)器,分別是Gunicorn和uWSGI,但是這兩個模塊不提供對window的支持。

flask如何結(jié)合apache

因此我們需要使用mod_wsgi這個模塊使得flask能夠在apache上進(jìn)行部署,mod_wsgi模塊是一個python寫的Apache的FastCGI模塊。   (推薦學(xué)習(xí):apache使用)

下載完畢后解壓得到Apache24,打開進(jìn)入conf文件,用文本打開,我這里采用Atom打開。

現(xiàn)在說明一下,我們需要修改的地方:

1、ServerRoot "c:/Apache24":修改成自己的目錄地址

2、Listen 8080:端口號配置,部分用戶可能會發(fā)現(xiàn)自己的80端口占用,可能是IIS或者SQLserver占用,我們可以通過修改這個端口號,方便測試

3、修改目錄授權(quán)

原本的:

<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文件進(jìn)行安裝:

pip install <文件絕對路徑>

(2)安裝成功后,運行下面的命令:

mod_wsgi-express module-config

(3)上面這條命令成功運行后,我們可以得到三條信息:

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

flask如何結(jié)合apache6、配置站點(重點):

# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.

因為我是一個不是很懂配置apache的人,我一開始看到參考鏈接中的配置<VirtualHost>不知道放在哪里,所以可以通過全文搜索,搜到了這句話,我可以確定將這個<VirtualHost>放在文件最底部。

將下面這段復(fù)制到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前綴,后面可以根據(jù)需求修改。

(3)項目路徑權(quán)限:設(shè)置為允許全部

<Directory "E:\Environment\Apache\Apache24\text_web">
Order allow,deny
Allow from all
</Directory>

到這里我們的httpd.conf文件已經(jīng)配置完成了。

二、下面進(jìn)入對flask項目的配置:

項目目錄:

flask如何結(jié)合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在解析這個文件時,只認(rèn)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進(jìn)入到Apache24的bin文件路徑下:

安裝apache為系統(tǒng)服務(wù):

httpd -k install

啟動apache:

httpd -k start

我發(fā)現(xiàn)有的電腦可以直接通過打開httpd.exe直接運行,而不需要將httpd安裝入系統(tǒng)服務(wù)。

其他可能用到的apache命令:

停止apache服務(wù):

httpd -k stop

重啟apache服務(wù):

httpd -k restart

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享flask如何結(jié)合apache內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI