文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Nginx Gunicorn flask项目部署思路分析详解

2022-12-08 20:56

关注

部署目的

之前聊了很多flask的知识点,那么完成一个flask项目之后,该这么让大家使用呢,直接放到本地,还是需要放到服务器上,放到服务器上又这么操作的呢,那么我们今天来聊聊flask项目部署。

首先在这里需要了解部署的目的,是让所有人或者指定的人可以访问到这个项目,并且可以更高效的提供服务给用户,这里就有些需要思考的关键点了:

然后基于这些点对比开发过程当中Flask自带的轻量级服务器很容易就发现了一些我们需要注意的点:

部署思路

基本的部署思路是采用nginx作为和前端进行交互的服务器,因为,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。nginx除了单点具备高性能的特点之外,也可以很方便的进行集群配置,比如:结合keepalive实现高可用,或者基于nginx和反向代价服务集群都是很方便的。

Gunicorn 服务器作为 wsgi app 的容器,能够与各种 Web 框架兼容(flask,django 等),得益于 gevent 等技术,使用 Gunicorn 能够在基本不改变 wsgi app 代码的前提下,大幅度提高 wsgi app 的性能。

所以基于这样的策略,可以让nginx指向gunicorn,gunicorn指向flask来做高性能部署,当然也可以直接使用gunicorn+flask部署,但是不建议nginx+flask部署,毕竟flask本身的性能是一个很大的瓶颈。

假如项目是main.py

from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
    return "Hello Flask"
# 如果用gunicorn的话,那么必须这么写不然的话,会提示找不到
if __name__ == '__main__':
    app.run()

gunicorn启动flask

安装gunicorn

pip3 install gunicorn #安装gunicorn
ln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn #配置环境变量

使用命令启动项目

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

-w 4 使用4个worker进程执行服务

-b 0.0.0.0:8080 绑定当前服务器所有ip的8080端口

使用配置

config.py

workers = 5        # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent"  # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "127.0.0.1:8000"   # 这里8080可以随便调整

常用配置

参数描述
debug是否开启debug模式,部署选false
bind访问地址
workers工作进程数
threads工作线程数
timeout超时时间
loglevel输出日志级别
pidfile运行日志路径
accesslog访问日志路径
errorlog错误日志路径

加载配置文件启动项目

gunicorn -c config.py main:app

nginx指向gunicorn

nginx安装这里就不详细解释了,直接聊配置吧(默认配置文件位置:/usr/local/nginx/conf/nginx.conf

upstream flask{
    server 127.0.0.1:8000;
} #这里可以添加多个地址,也就是可以指向多个gunicorn服务器,
server {
    # 监听80端口
    listen 80;
    # 本机
    server_name localhost; 
    # 默认请求的url
    location / {
        #请求转发到gunicorn服务器
        proxy_pass http://flask; 
        #设置请求头,并将头信息传递给服务器端 
        proxy_set_header Host $host; 
    }
}

关于部署先聊这么多,以上就是Nginx Gunicorn flask项目部署思路分析详解的详细内容,更多关于Nginx Gunicorn flask部署的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯