Flask 部署(异步协程方式)

环境准备

主要组件版本信息

名称版本
CentosCentOS Linux release 7.3.1611
Python3.8
Flask2.0.3
gevent21.12.0
greenlet1.1.2
gunicorn20.1.0

Python3.8部署

略(参考Django部署文档

gunicorn配置

在根目录下添加gunicorn.py配置文件,添加入下内容:

bind = "0.0.0.0:8000"   #绑定的ip与端口
backlog = 512                #监听队列数量,64-2048
#chdir = '/home/test/server/bin'  #gunicorn要切换到的目的工作目录
worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = 5 # multiprocessing.cpu_count()    #进程数
threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数
loglevel = 'debug' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'

# accesslog = "/home/log/gunicorn_access.log"      #访问日志文件
#errorlog = "/home/log/gunicorn_error.log"        #错误日志文件
accesslog = "-"  #访问日志文件,"-" 表示标准输出
errorlog = "-"   #错误日志文件,"-" 表示标准输出
pidfile = "./pidfile"
proc_name = 'fof_api'   #进程名

此时项目结构:
在这里插入图片描述

启动gunicorn

1.通过上述配置文件启动:

(stall) [root@localhost stall_artifact]# gunicorn -c gunicorn.py run:app
以守护进程方式启动:
(stall) [root@localhost stall_artifact]# gunicorn -c gunicorn.py run:app -D

在这里插入图片描述
启动后开放防火墙端口

开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service

2.通过指令启动
2.1 eventlet启动

(stall) [root@localhost stall_artifact]# gunicorn --worker-class eventlet -w 1 run:app

2.2通过gevent启动

(stall) [root@localhost stall_artifact]# gunicorn -k gevent -w 1 run:app

nginx 配置

server {
    listen 8088;
    server_name _;

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }

    location /static {
        alias /var/www/web_backend/static;
        expires 30d;
    }

    location /socket.io {
        include proxy_params;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://127.0.0.1:8000/socket.io;
    }
}

配置nginx后修改gunicorn bindIP配置为127.0.0.1:8000,并将8000防火墙端口关闭,开放nginx 8088端口
配置后重启nginx

nginx -t 
nginx -s reload

到这里部署就结束了

部署问题

1.在使用eventlet启动时报导入错误
在这里插入图片描述

原因:版本兼容问题
解决方案:将eventlet版本降低

(stall) [root@localhost stall_artifact]# pip install eventlet==0.30.2  -i https://pypi.tuna.tsinghua.edu.cn/simple
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值