当前位置: 代码迷 >> 综合 >> 搭建基于nginx+gunicorn+flask的ai服务平台
  详细解决方案

搭建基于nginx+gunicorn+flask的ai服务平台

热度:91   发布时间:2023-12-06 18:47:08.0

概念:

wsgi:Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。

Flask:python web微服务开发框架

gunicorn:在unix系统运行的wsgi服务器

nginx:http和反向代理服务器(客户端无法感知代理的存在)

总体架构:

在生产环境下,可以通过Nginx+gunicorn+Flask部署Web服务,从而达到高并发高稳定性的要求。
如果要部署多个APP,可以采用单个Nginx,多个gunicorn+Flask的方式来实现

(nginx收到客户端发来的请求,根据nginx中配置的路由,将其转发给WSGI)
nginx:”WSGI,找你的来了!”
(WSGI服务器根据WSGI协议解析请求,配置好环境变量,调用start_response方法呼叫flask框架)
WSGI服务器:”flask,快来接客,客户资料我都给你准备好了!”
(flask根据env环境变量,请求参数和路径找到对应处理函数,生成html)
flask:”!@#$%^……WSGI,html文档弄好了,拿去吧。”
(WSGI拿到html,再组装根据env变量组装成一个http响应,发送给nginx)
WSGI服务器:”nginx,刚才谁找我来着?回他个话,!@#$%^…..”
(nginx再将响应发送给客户端)

 

背景:

Flask内置的web服务器比较简单,只能单进程(worker)运行,性能不强,容易卡死,只适合开发环境。所以需要更强大的gunicorn来配合。nginx用于负载均衡和并发处理。保证内网安全:通常将反向代理作为访问地址,web服务器是内网。

ubuntu下安装nginx:

sudo apt-get install nginx
启动服务器:

/etc/init.d/nginx start
查看进程:

ps -ef|grep -i nginx

验证是否启动成功:

常见命令:

$ /etc/init.d/nginx start  #启动
$ /etc/init.d/nginx stop  #关闭
$ /etc/init.d/nginx restart  #重启
$  killall nginx    杀死所有nginx# 如果是生产环境的话Nginx正在运行,就不要直接stop start 或者 restart  直接reload就行了
# 对线上影响最低
$ /etc/init.d/nginx reload

配置文件修改:

如果sudo apt-get install ngnix, 安装的默认位置是:/etc/nginx

修改路径在: /etc/nginx/sites-available/default    修改default即可

配置说明:

简单的配置:

两个server服务,监听端口不一样

$ nginx -t  # 检查nginx语法问题

 

 

参考:

http://www.chenxm.cc/article/679.html  ubuntu/linux nginx+Gunicorn+django 部署方法详细教程

https://dormousehole.readthedocs.io/en/latest/deploying/wsgi-standalone.html  flask官网部署:独立 WSGI 容器

https://www.jianshu.com/p/192e62a5cdd2 Flask + Nginx + Gunicorn + Gevent部署

https://www.jianshu.com/p/dba83a473f12 Flask+gunicorn+nginx部署python (负载均衡)

https://www.jianshu.com/p/d71d6d793aaa Flask应用示例3 - 通过nginx+gunicorn+flask搭建web服务(参考总体架构)

https://www.cnblogs.com/xyou/p/8107872.html  Flask + Gunicorn + Nginx 部署 (总结便于理解)