flask 应用的架构和部署(flask+gunicorn+nginx)

1 篇文章 0 订阅
1 篇文章 0 订阅

本文主要介绍flask+gunicorn+nginx的配合部署过程,它只是入门的部署过程,当你的web应用有并发要求时,还应加上缓存和队列调度等等,这部分可以参考https://zhuanlan.zhihu.com/p/25038203

前言:

1.为什么要使用gunicorn?
目前我们使用flask内建的wsgi server,这个server由于是单进程单线程模型的,所以性能很差,一个请求不处理完的话服务器就会阻塞住其他请求,我们需要对这个server做替换。
而gunicorn是一个python编写的高效的WSGI HTTP服务器,它比uwsgi使用更简单
2.为什么需要nginx?
nginx反向代理能带给我们很多好处:
- 负载均衡,把请求平均地分到上游的app server进程。
- 静态文件处理,静态文件的访问交给nginx来处理,降低了app server的压力。
- 接收完客户端所有的TCP包,再一次交给上游的应用来处理,防止app server被慢请求干扰。
- 访问控制和路由重写。
- 强大的ngx_lua模块。
- Proxy cache。
- Gzip,SSL…

应用架构:

这里写图片描述

部署步骤:

这里写图片描述

1. wsgi

项目中创建wsgi.py

from app import create_app
application = create_app('production')
if __name__ == '__main__':
    application.run()
2.远程复制scp

远程复制项目文件到服务器

# 在本地目录内执行
scp -r app jason@10.222.32.10:/usr/share/www
3.安装各种环境和依赖包并测试gunicorn服务

在服务器上执行

# 安装venv环境
virtualenv venv
. venv/bin/activate
# 安装依赖包
pip install -r requirements.txt
#安装gunicorn
pip install gunicorn
# 测试运行服务
gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application
# 解释
-w :要开多少个worker,即开启几个进程
-b :指定host地址
wsgi: :声明入口wsgi文件中的全局变量
4.配置upstart

在linux启动时就跟随启动起来
在项目中编写upstart.conf并复制到服务器命名为blog.conf

description "My Blog service"
# 运行级别
start on runlevel [2345]
stop on runlevel [!2345]
# 用户id和用户组
respawn
setuid root
setgid www-data
# 运行路径和服务运行时的工作目录
env PATH=/usr/share/www/venv/bin
chdir /usr/share/www/

exec gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application

在服务器端

# 建立服务目录配置
sudo nano /etc/init/blog.conf
# 测试建立的文件
deactivate
# 开启服务
sudo service blog start
5. 配置nginx(反向代理)

在项目中编写nginx.conf

# /ect/nginx/sites-available/default

server {
    listen 80;
    server_name 10.211.55.10;

    location / {
        # 要和gunicorn配置的host地址对应上
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

在服务器端

# 进入nginx默认配置文件
sudo nano /ect/nginx/sites-available/default
# 将server{}中的内容替换为上面写的内容
# 重启nginx
sudo service nginx restart
6. 初始化数据库并重启服务

在服务器端

createdb blog-db

cd /usr/share/www
. venv/bin/activate
python manage.py db upgrade

deactivate
sudo service blog restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值