文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Flask + Gunicorn + Nginx的部署方式

2023-06-04 11:13

关注

本篇内容介绍了“Flask + Gunicorn + Nginx的部署方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

WSGI容器——Gunicorn

常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多,所以这里我也选择用Gunicorn作为容器。

1

启动

$ gunicorn [options] module_name:variable_name

module_name对应python文件,variable_name对应web应用实例。
以最简单的flask应用为例:

#main.py

from flask import Flask

app = Flask(__name__)

 

@app.route('/')

def index():

    return 'hello world'

 

if __name__ == '__main__':

    app.run()

启动代码:

gunicorn --worker=3 main:app -b 0.0.0.0:8080

<td class="crayon-code" ">

# -*- coding: utf-8 -*-

import os

 

from . import create_app

import datetime

 

# Create an application instance that web servers can use. We store it as

# "application" (the wsgi default) and also the much shorter and convenient

# "app".

application = app = create_app('default')

 

@app.context_processor

def template_extras():

    """

    上下文处理装饰器,返回的字典的键可以在上下文中使用

    :return:

    """

    return {'enumerate': enumerate, 'len': len, 'datetime': datetime}

  • 在wsgi文件中创建flask实例给gunicorn使用。

  • 创建实例后,注册上下文装饰器。

再通过gunicorn启动flask应用:

gunicorn -b 127.0.0.1:8000 -k gevent -w 1 app.wsgi

安装

sudo apt-get install nginx

1

修改配置文件

先将配置文件备份:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

然后修改配置文件:

server {

        listen 80;

        server_name _; # 外部地址

 

        location / {

                proxy_pass http://127.0.0.1:8000;

                proxy_redirect     off;

                proxy_set_header   Host                 $http_host;

                proxy_set_header   X-Real-IP            $remote_addr;

                proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;

                proxy_set_header   X-Forwarded-Proto    $scheme;

        }

这里将Nginx设置为代理模式,代理到本地的8000端口,之后就可以通过公网访问flask应用了。

<h3 id="toc_9" color:#2E2E2E;white-space:normal;background-color:#FFFFFF;">总结

最后,总结下这几个部分的关系:

Flask + Gunicorn + Nginx的部署方式
(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 + Gunicorn + Nginx的部署方式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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