【Flask】Nginx / Gunicorn入门:部署你的Flask项目
什么是Nginx?
参考:Nginx入门
我们很多人应该都用过淘宝,要知道每天同时连接到淘宝网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;
也就是通过部署多台服务器来解决访问人数限制的问题;淘宝网站中大部分功能也是直接使用nginx进行反向代理实现的
上图表示的是全国各地的用户在淘宝客户端发出请求,经过了Nginx 反向代理服务器,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理。
此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了。Nginx扮演的就是一个反向代理角色。
总结下:反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息
为什么使用Gunicorn?
参考:gunicorn 详解
flask 自带的 wsgi 不推荐生产环境使用,官方推荐使用其他的 wsgi 服务器进行部署(如 gunicorn )
Flask 自带的开发Web 服务器不够强健、安全和高效,无法在生产环境中使用。在本章,
我们要介绍几种不同的部署方式。
调试器是开发过程中进行问题调试的优秀工具,但其显然不能在生产环境中使用。生产环
境中发生的错误会被静默掉,取而代之的是向用户显示一个500 错误页面。不过幸好错误
的栈跟踪不会完全丢失,因为Flask 会将其写入日志文件。
在程序启动过程中,Flask 会创建一个Python 提供的logging.Logger 类实例,并将其附属
到程序实例上,得到app.logger。在调试模式中,日志记录器会把记录写入终端;但在生
产模式中,默认情况下没有配置日志的处理程序,所以如果不添加处理程序,就不会保存
日志。
电子邮件日志记录器的日志等级被设为logging.ERROR,所以只有发生严重错误时才会发送
电子邮件。通过添加适当的日志处理程序,可以把较轻缓等级的日志消息写入文件、系统
日志或其他的支持方法。这些日志消息的处理方法很大程度上依赖于程序使用的托管平台。
Flask 自带的开发Web 服务器表现很差,因为它不是为生产环境设计的服务器。有两个
可以在生产环境中使用、性能良好且支持Flask 程序的服务器,分别是Gunicorn(http://
gunicorn.org/)和uWSGI(http://uwsgi-docs.readthedocs.org/en/latest/)。
安装
安装Web 服务器。例如,可通过如下命令安装Gunicorn:
(venv) $ pip install gunicorn
某视频教程
视频教程链接
CentOS上的操作
查看python版本
python -V
注意V大写
查看pip版本
pip -V
安装gunicorn
pip install gunicorn
CentOS-7安装pip
如果pip安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)):参考文章
使用supervisor
nginx+Gunicorn部署你的Flask项目
参考:Gunicorn部署Flask项目
首先安装gunicorn
pip install gunicorn
vim编辑test.py
使用gunicorn test:app
运行py文件
在浏览器中访问
LINUX安装nginx详细步骤
1.安装依赖包
- //一键安装上面四个依赖
- yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.下载并解压安装包
- //创建一个文件夹
- cd /usr/local
- mkdir nginx
- cd nginx
- //下载tar包
- wget http://nginx.org/download/nginx-1.13.7.tar.gz
- tar -xvf nginx-1.13.7.tar.g
3.安装nginx
- //进入nginx目录
- cd /usr/local/nginx
- //执行命令
- ./configure
- //执行make命令
- make
- //执行make install命令
- make install
4.配置nginx.conf
- # 打开配置文件
- vi /usr/local/nginx/conf/nginx.conf
将端口号改成8089,因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。
localhost修改为你服务器ip地址。
5.启动nginx
/usr/local/nginx/sbin/nginx -s reload
查看nginx进程是否启动:
ps -ef | grep nginx
6.若想使用外部主机连接上虚拟机访问端口192.168.131.2,需要关闭虚拟机的防火墙:
centOS6及以前版本使用命令: systemctl stop iptables.service
centOS7关闭防火墙命令: systemctl stop firewalld.service
随后访问该ip即可看到nginx界面。
7.访问服务器ip查看
安装完成一般常用命令
进入安装目录中,
命令: cd /usr/local/nginx/sbin
启动,关闭,重启,命令:
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启
访问示例
开启nginx
在虚拟机中使用ifconfig
查看ip地址(我使用的是桥接模式),然后在实体机浏览器中输入虚拟机ip:8089
即可访问到nginx首页
【Flask】Nginx / Gunicorn入门:部署你的Flask项目相关推荐
- 【Flask】Nginx+Gunicorn+Supervisor部署一个Flask项目:步骤总结
为什么要使用gunicorn? Flask 作为一个 Web 框架,内置了一个 webserver, 但这自带的 Server 到底能不能用? 官网的介绍: While lightweight and ...
- Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl
Flask项目部署云服务器 CentOS7.3+Redis+MySQL+Flask+Nginx+Gunicorn +Supervisorctl 项目运行环境 阿里云(单核CPU, 2G内存, Cent ...
- Python3 Flask+nginx+Gunicorn部署(上)
前言:一般在本地运行flask项目通常是直接python3 文件名.py,然后打开:http://127.0.0.1:5000 查看代码结果 这次主要是记录flask在python3 环境结合ngin ...
- django+nginx+gunicorn+supervisord部署配置
一.背景介绍 后端服务是Django框架编写的,需要使用Gunicorn进行服务托管,使用supervisord进行保持活跃,最后通过Nginx向外提供服务 二.nginx+gunicorn 安装和配 ...
- 云主机配置微信公众号后台全记录 --【 阿里云ECS CentOS7 + Python3 + Flask + Nginx + Gunicorn + WeRoBot + Systemd 】
前言 在天秤座的纠结性格反复权衡后,最终我还是拥有了自己的第一个个人云主机.我这里选择的是"阿里云学生专享服务器",在做学生的最后一年有幸享受到9.5/月的优惠价格,还是要感谢阿里 ...
- CentOS7 + Xshell6 + Xftp6 + Nginx+ Gunicorn环境部署与项目发布
具体步骤 1. 链接服务器 你需要拥有一个服务器,我是通过Xshell6 连接上阿里云服务器(CentOS7系统)的. Xshell6 + Xftp6 阿里云操作系统CentOS7Server 2. ...
- Nginx下同域部署多个Vue项目(history路由模式),报404、500错误
主要内容 一.环境 二.问题描述 三.问题解决 1.修改vue项目中的vue.config.js文件 2.修改Nginx的nginx.conf配置文件 3.Nginx目录结构 一.环境 系统: win ...
- Centos7+nginx+uwsgi来部署我的Django项目
前不久写了个小的博客项目,想着将它部署到服务器上去,因为是第一次部署项目,有很多的东西都不这么懂,走了很多的弯路,现在部署成功了,怕以后忘记了就记录下笔记 首先我的项目结构如下: 关于服务器的远程连接 ...
- Flask 应用部署方式之 Flask+Gunicorn+Nginx
1. Why Flask+Gunicorn+Nginx Flask+Gunicorn+Nginx是最常用的Flask部署方案,大家深究过为何用这样的搭配么? 1.1 Why? Flask 是一个web ...
最新文章
- ldconfig命令详解,linux动态链接库
- 你的房东可能正用AI筛查你的犯罪记录,决定要不要租房给你
- 深入探究Java中equals()和==的区别是什么
- WEBBASE篇: 第五篇, CSS知识3
- Azure Cosmos Db 介绍及演示
- Maven - settings.xml里的offline节点的作用
- 旋转研究(矩阵,欧拉角,四元数)
- Ubuntu16.04镜像下载
- python立方体类_python学习12类
- vba编写的出库单(可添加出库项目记录、生成、打印出库单)
- iOS开发 ☞ 系统自带字体
- bmp qimage 保存位_在Qt中保存QImage(Save a QImage in Qt)
- 魔兽支持宽屏--怎样让宽屏支持更多游戏?
- 小程序apkg还原_狐妖小红娘手游背后,有这样一群“天真”的人
- iOS HomeKit Quick Start iOS HomeKit快速入门 Lynda课程中文字幕
- Error inflating class出现报错
- 半导体的光学性质和光电与发光现象
- 寒假每日一题题解(1.20)十三号星期五
- 『网络迷踪』ctfshow-网络迷踪(部分)
- JPEG2000图像压缩算法学习
热门文章
- 大脚导入配置选择哪个文件_有史以来最全的 IntelliJ IDEA 配置图解
- pcb地线应该不应该做成环路_干货|图文详解EMC的PCB设计技术
- VSCode remote-ssh插件报错“拒绝连接“
- 不平等博弈问题学习记录(三)(对于超实数在博弈下左大右小以及多堆情况的扩充)
- 数据结构与算法 | 归并排序
- Linxu的常用命令
- 如何从0搭建公司的后端技术栈
- 高并发场景下 disk io 引发的高时延问题
- LiveVideoStack成立5周年生日快乐!一路走来,感谢有你!
- 如何将RTC中基于AI的音频算法有效的产品化