前言
解決flask部署服務後臺不穩定,容易down的問題。在Linux 平臺下直接nohub
啓動flask服務雖然可以在後臺運行,但極其不穩定,容易掛掉。如何保持後臺的服務進程穩定運行是一件非常重要的事情。而本文的一個解決方法是flask+gunicorn+nginx
。flask和gunicorn都是python下的輕量級的web開發服務。flask實現了web路由方法,gunicorn負責啓動監聽flask服務,而nginx是做一個反向代理。若您有更好的解決方案望告知!!!
1.部署平臺
1.1. 系統:Centos 7.7
1.2. 開發語言:python3.6
1.3. 相關工具:falsk, gunicorn, nginx
2.各功能簡介
2.1 flask 介紹
flask是一個基於python 的Web 微框架
Python的著名Web框架有Django、Pyramid、Tornado、webpy、Zope等
Flask由兩個主要依賴組成(提供路由、調試和Web服務器網關接口的Werkzeug和提供模板的Jinja2)
創建文件demo.py, 代碼如下
from flask import Flask
app = Flask(__name__)
@app.route('/')
def test():
return 'Falsk demo!'
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8080, debug=True)
2.2 gunicorn介紹
gunicorn 是一個WSGI容器
Web框架致力於如何生成HTML代碼,而Web服務器用於處理和響應HTTP請求。Web框架和Web服務器之間的通信,需要一套雙方都遵守的接口協議。WSGI協議就是用來統一這兩者的接口的。
pip install gunicorn
$ gunicorn --worker=3 demo:app -b 0.0.0.0:8080
在centos 下使用
nohub
命令執行
nohup
是一個 Linux 命令,和&
一起使用,根目錄生成一個nohup.out
文件記錄所有的log
信息
$ nohup gunicorn --worker=3 demo:app -b 0.0.0.0:8080&
2.3 nginx 介紹
Nginx
是一款輕量級的Web服務器、反向代理服務器,由於它的內存佔用少,啓動極快,高併發能力強
安裝有兩種方式直接安裝或者源碼編譯安裝
#省略部分過程,如添加nginx 源
$ sudo yum install epel-release
$ sudo yum install nginx
#啓動 ,ngnix 目錄下(也有別的啓動方法)
$ ./niginx
如果要實現對gunicorn 的反向代理需要設置
nginx.conf
Ven 環境安裝參考
https://blog.csdn.net/wengzilai/article/details/78722626
如有不足請批評指正!!!
參考文獻
[1] https://www.jianshu.com/p/52d8e3deaa16
[2] https://segmentfault.com/a/1190000018109309
[3] https://www.zhihu.com/question/21888077