前言
解决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