Flask Python Web部署

  • 概要:使用 Nginx + Gunicorn + Flask 将Web应用部署到服务器

最近我用flask把网站重构完后,就需要将这个flask web应用部署到服务器上,但是作为小白,部署是什么?怎么部署?自己google了很多资料 都讲得零零碎碎的,也没怎么看明白,满头雾水。


简而言之 需要将Flask部署到服务器 你还需要两个东西:

1.Web服务器:Nginx、Apache 用于处理和响应HTTP请求

想要把Flask写的Web应用放到服务器上供他人访问,你不可能让用户使用Flask的5000端口来访问你的Web应用

所以你需要Nginx这个Web服务器做一个反向代理 当用户访问你的域名时 nginx通过代理转到本地的5000端口

2.WSGI容器:uWsgi、Gunicorn

Web框架(Flask)和Web服务器(Nginx)之间的通信,需要一套双方都遵守的接口协议。而WSGI协议就是用来统一这两者的接口的(WSGI是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口)

Gunicorn和uWSGI是常用的WSGI容器,Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多,所以这里我也选择用Gunicorn作为容器。(uWSGI让我更迷糊 Gunicorn简单点)

我们开始吧

我没有使用虚拟环境 因为云服务器上我只会存在一个Web应用

  1. Flask需要Python环境 你首先需要 安装Python环境

  2. 安装Flask、Gunicorn
    pip install flask
    pip install gunicorn

如果是按照本网站(我的其他文章)教程安装的python3 不要忘记创建软连接哦
ln /usr/local/python3.7/bin/gunicorn /usr/bin/gunicorn

  1. 安装Nginx服务器
  2. 配置nginx.conf 反向代理
    vi /usr/local/nginx/conf/nginx.conf
    找到nginx.conf配置文件路径方法可参见我的文章
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

在location中添加如上字段


ar1.png
  1. 这里使用一个简单的Flask应用做演示
    5.1 借用下官网的入门小程序 将它保存为 hello.py

    ar2.png

    5.2 在hello.py所在的目录下
    gunicorn -w 4 hello:app

    -w 设置进程数
    -b 设置端口
    默认使用的是8000 可以通过-b 127.0.0.1:5000 设置到5000或其他端口

    ar3.png

通过你的域名就可以访问了
你也可以通过 虚拟机搭建一个Web服务器 通过虚拟机的ip来访问Web应用

提示:需要打开80端口浏览器才能正常访问

©文章由 靓木笔记 迁移简书

推荐阅读更多精彩内容