- 概要:使用 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应用
Flask需要Python环境 你首先需要 安装Python环境
安装Flask、Gunicorn
pip install flask
pip install gunicorn
如果是按照本网站(我的其他文章)教程安装的python3 不要忘记创建软连接哦
ln /usr/local/python3.7/bin/gunicorn /usr/bin/gunicorn
- 安装Nginx服务器
- 配置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中添加如上字段
-
这里使用一个简单的Flask应用做演示
5.1 借用下官网的入门小程序 将它保存为 hello.py
5.2 在hello.py所在的目录下
gunicorn -w 4 hello:app
-w 设置进程数
-b 设置端口
默认使用的是8000 可以通过-b 127.0.0.1:5000 设置到5000或其他端口
通过你的域名就可以访问了
你也可以通过 虚拟机搭建一个Web服务器 通过虚拟机的ip来访问Web应用
提示:需要打开80端口浏览器才能正常访问
©文章由 靓木笔记 迁移简书