亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Nginx Gunicorn flask項(xiàng)目部署思路分析詳解

瀏覽:203日期:2023-03-13 15:37:53
目錄
  • 部署目的
  • 部署思路
  • gunicorn啟動(dòng)flask
  • nginx指向gunicorn

部署目的

之前聊了很多flask的知識(shí)點(diǎn),那么完成一個(gè)flask項(xiàng)目之后,該這么讓大家使用呢,直接放到本地,還是需要放到服務(wù)器上,放到服務(wù)器上又這么操作的呢,那么我們今天來聊聊flask項(xiàng)目部署。

首先在這里需要了解部署的目的,是讓所有人或者指定的人可以訪問到這個(gè)項(xiàng)目,并且可以更高效的提供服務(wù)給用戶,這里就有些需要思考的關(guān)鍵點(diǎn)了:

  • 1、需要7*24不間斷的提供服務(wù),家用的筆記本電腦或者臺(tái)式機(jī)是不夠的。
  • 2、需要提供給指定的人或者所有人看,就需要將項(xiàng)目放到大家可以訪問到的服務(wù)器。
  • 3、任何用戶請(qǐng)求服務(wù)器都希望得到快速高效的服務(wù),所以服務(wù)器的效率是一個(gè)很關(guān)鍵的點(diǎn)。
  • 4、還需要注意網(wǎng)站的安全,為用戶提供服務(wù)的同時(shí)需要保證用戶和網(wǎng)站的數(shù)據(jù)都是安全的。

然后基于這些點(diǎn)對(duì)比開發(fā)過程當(dāng)中Flask自帶的輕量級(jí)服務(wù)器很容易就發(fā)現(xiàn)了一些我們需要注意的點(diǎn):

  • 1、開發(fā)一般是基于windows的個(gè)人電腦,這個(gè)環(huán)境開發(fā)和簡單的單元測試是沒有問題的,但是如果要進(jìn)行項(xiàng)目的運(yùn)行是不夠的,所以最好使用linux服務(wù)器(當(dāng)然windows也有服務(wù)器版本)。
  • 2、Flask服務(wù)器默認(rèn)監(jiān)聽127.0.0.1:5000,這個(gè)地址是本機(jī)地址,外網(wǎng)訪問不到,需要修改,端口默認(rèn)是5000,http默認(rèn)是80也是可以修改的項(xiàng)。
  • 3、flask自帶的輕量級(jí)web服務(wù)器默認(rèn)是單線程的,最大并發(fā)支持200,這樣的并發(fā)支持顯然無法提供更好的服務(wù),所以可以通過nginx或者其他web服務(wù)器來提高服務(wù)器的性能。
  • 4、flask開發(fā)的時(shí)候?yàn)榱朔奖銜?huì)開啟debug調(diào)試模式,調(diào)試模式下,如果發(fā)生服務(wù)端錯(cuò)誤的時(shí)候會(huì)把發(fā)生錯(cuò)誤的代碼和觸發(fā)流程都展示出來,這樣很方便調(diào)試和排錯(cuò),但是也容易導(dǎo)致代碼被用戶看到,引發(fā)安全問題,所以需要關(guān)閉調(diào)試模式。

部署思路

基本的部署思路是采用nginx作為和前端進(jìn)行交互的服務(wù)器,因?yàn)椋琋ginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)。nginx除了單點(diǎn)具備高性能的特點(diǎn)之外,也可以很方便的進(jìn)行集群配置,比如:結(jié)合keepalive實(shí)現(xiàn)高可用,或者基于nginx和反向代價(jià)服務(wù)集群都是很方便的。

Gunicorn 服務(wù)器作為 wsgi app 的容器,能夠與各種 Web 框架兼容(flask,django 等),得益于 gevent 等技術(shù),使用 Gunicorn 能夠在基本不改變 wsgi app 代碼的前提下,大幅度提高 wsgi app 的性能。

所以基于這樣的策略,可以讓nginx指向gunicorn,gunicorn指向flask來做高性能部署,當(dāng)然也可以直接使用gunicorn+flask部署,但是不建議nginx+flask部署,畢竟flask本身的性能是一個(gè)很大的瓶頸。

假如項(xiàng)目是main.py

from flask import Flaskapp = Flask(__name__)@app.route("/")def index():    return "Hello Flask"# 如果用gunicorn的話,那么必須這么寫不然的話,會(huì)提示找不到if __name__ == "__main__":    app.run()

gunicorn啟動(dòng)flask

安裝gunicorn

pip3 install gunicorn #安裝gunicornln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn #配置環(huán)境變量

使用命令啟動(dòng)項(xiàng)目

gunicorn -w 4 -b 0.0.0.0:8080 main:app #main文件下的app變量

-w 4 使用4個(gè)worker進(jìn)程執(zhí)行服務(wù)

-b 0.0.0.0:8080 綁定當(dāng)前服務(wù)器所有ip的8080端口

使用配置

config.py

workers = 5# 定義同時(shí)開啟的處理請(qǐng)求的進(jìn)程數(shù)量,根據(jù)網(wǎng)站流量適當(dāng)調(diào)整worker_class = "gevent"  # 采用gevent庫,支持異步處理請(qǐng)求,提高吞吐量bind = "127.0.0.1:8000"   # 這里8080可以隨便調(diào)整

常用配置

參數(shù)描述debug是否開啟debug模式,部署選falsebind訪問地址workers工作進(jìn)程數(shù)threads工作線程數(shù)timeout超時(shí)時(shí)間loglevel輸出日志級(jí)別pidfile運(yùn)行日志路徑accesslog訪問日志路徑errorlog錯(cuò)誤日志路徑

加載配置文件啟動(dòng)項(xiàng)目

gunicorn -c config.py main:app

nginx指向gunicorn

nginx安裝這里就不詳細(xì)解釋了,直接聊配置吧(默認(rèn)配置文件位置:/usr/local/nginx/conf/nginx.conf

upstream flask{    server 127.0.0.1:8000;} #這里可以添加多個(gè)地址,也就是可以指向多個(gè)gunicorn服務(wù)器,server {    # 監(jiān)聽80端口    listen 80;    # 本機(jī)    server_name localhost;     # 默認(rèn)請(qǐng)求的url    location / {#請(qǐng)求轉(zhuǎn)發(fā)到gunicorn服務(wù)器proxy_pass http://flask; #設(shè)置請(qǐng)求頭,并將頭信息傳遞給服務(wù)器端 proxy_set_header Host $host;     }}

關(guān)于部署先聊這么多,以上就是Nginx Gunicorn flask項(xiàng)目部署思路分析詳解的詳細(xì)內(nèi)容,更多關(guān)于Nginx Gunicorn flask部署的資料請(qǐng)關(guān)注其它相關(guān)文章!

標(biāo)簽: Nginx
主站蜘蛛池模板: 国产老妇一性一交一乱 | 尤蜜视频在线观看播放 | 国产精品福利在线观看免费不卡 | 韩国一级毛片视频免费观看 | 韩国中文字幕在线观看 | 亚洲国产天堂在线网址 | 中文字幕免费在线观看动作大片 | 国产国产精品人在线视 | 黄色a级片在线观看 | 性做久久久久久网站 | 麻豆网站| 大学生毛片a左线播放 | 深夜免费福利视频在线播放 | 日本一级特黄a大片在线 | 一级做a爰片性色毛片思念网 | 欧美日韩一区二区综合在线视频 | 亚洲阿v天堂2021在线观看 | 日韩精品大片 | 99久久99久久精品国产片果冻 | 黄色免费网站在线观看 | a视频在线看| 成年性网站 | 青青草91在线 | 性生活视频黄色 | 日韩视频一区 | 黄网免费在线观看 | 国产在线播放一区 | 男女叼嘿视频大全免费看 | 91短视频网址 | 黄图视频在线观看 | 国产国产精品人在线视 | 一个人看的ww免费视频 | 日本中文字幕乱码aa高清电影 | 成人福利热舞hd | 色婷婷狠狠五月综合天色拍 | 一区二区三区在线看 | 欧美色欧美亚洲高清在线视频 | 欧美日韩亚洲高清不卡一区二区三区 | 青青操国产 | 成人免费aa在线观看 | 午夜精品同性女女 |