安装gunicorn运行Flask网站
在生产环境中,flask自带的服务器,无法满足性能要求,我们这里采用Gunicorn做wsgi容器,来部署flask程序。
Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器。从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗。Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。 Gunicorn 服务器与许多 Web 框架广泛兼容,简单实现,轻松服务器资源并且速度相当快。
区分几个概念:
WSGI:全称是Web Server Gateway Interface(web服务器网关接口),它是一种规范,它是web服务器和web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
uwsgi:是一种传输协议,用于定义传输信息的类型。
uWSGI:是实现了uwsgi协议WSGI的web服务器。
我们的部署方式: nginx + gunicorn + flask
Gunicorn 服务器作为 wsgi app 的容器,能够与各种 Web 框架兼容(flask,django 等),得益于 gevent 等技术,使用 Gunicorn 能够在基本不改变 wsgi app 代码的前提下,大幅度提高 wsgi app 的性能。
安装命令
pip3 install gunicorn
基于Gunicorn启动我们的Flask项目(打开项目目录下执行)
gunicorn -w 4 -b 127.0.0.1:5001 manage:app
用gunicorn启动flask服务
-w 4 [开启4个进程]
-b 127.0.0.1:5001 [启动flask服务的ip+端口]
manage [启动flask服务的文件名.py]
app [项目实例]
启动Flask项目后查看Gunicorn进程命令
项目指定的是本地回环地址【127.0.0.1】,也就是只有本机才可以访问这个项目;
为了我们的项目能够实现高并发我们还需要配置nginx;
Nginx反向代理Flask项目
nginx配置文件配置
server {
# 监听80端口
listen 80;
# 将域名解析到主机后填写到server_name,多个用,号分割
server_name www.yourdomain.com;
# 默认请求的url
location / {
#请求转发到gunicorn服务器
proxy_pass http://127.0.0.1:5001; # 这里的ip+端口就是我们启动flak的ip和端口
#设置请求头,并将头信息传递给服务器端
proxy_set_header Host $host;
}
}
配置完nginx需要重启nginx配置文件才会生效,选用重载配置平滑启动。
防火墙
将flask使用的端口放开。
部分云服务器(如阿里云)还需要在控制台防火墙中设置放行。
终止gunicorn进程
查询主进程
pstree -ap | grep gunicorn
关闭主进程
kill -9 查询出的pid
评论已关闭