Flask + Gunicorn + Nginx的部署方式
本篇内容介绍了"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 |
# -*- 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应用了。
总结
最后,总结下这几个部分的关系:
(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的部署方式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
配置
应用
上下
上下文
变量
实例
客户
容器
服务器
服务
方式
内容
客户端
更多
环境
知识
代理
处理
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海品牌软件开发销售价格
生死阻击2连接服务器失败
软件开发详细模块设计文档
一种软件开发服务器存放装置
合肥 软件开发外包公司
3650服务器管理密码
软件开发在小城市
百闻软件开发用什么语言
通信行业 网络安全工作
数据库应用技术第五章上机考试
赤坎手机软件开发
国家计算机三级网络技术考试题库
asa外网访问内网服务器
幼儿园网络安全工作实施方案
商职的计算机网络技术咋样
数据库对象有三要素
网络安全编程
南京综合软件开发电话多少
高斯数据库 信创
普陀区品牌软件开发销售电话
安徽个人软件开发
陕西网络安全非标机箱采购
nsfv 网络安全功能虚拟化
云计算与网络安全怎么选
长沙网络安全系统公司
数据库查表内某一列
上位软件开发技术pdf
企业微信云服务器怎么弄
上海网络技术职业学院排名
租用vps服务器
相关文章
# -*- 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应用了。
总结
最后,总结下这几个部分的关系:
(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的部署方式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!