centOS7 flask项目布署

先用1张图表示centOS布署flask的关键点,以及可能遇到的问题,及解决办法。
图片看不清,可以【下载】下来看,清晰度能够看清字
【目标】
- 局域网内,通过url可以访问flask编写的api
- 更新flask项目后,自动布署
【工具】
自动布署涉及的工具:
- gitlab
- jenkins
布署flask项目,涉及的工具:
- flask编程
- gunicorn:gunicorn启动flask项目的方法
- nginx:明确nginx与gunicorn之间的关系,当浏览器访问flask-api时,背后发生了什么
- supervisor:掌握使用方法
- linux操作:创建文件,切换目录,安装工具,启动/重启/关闭工具,查看被占端口号以及,杀死进程
【环境介绍】
- flask运行环境:
python3,pip3,python虚拟环境
- 布署环境:
centOS7
【操作步骤】
配置gunicorn:
1.创建虚拟环境,并下载gunicorn(pip install gunicorn)
2.在项目根目录下创建gunicorn的启动文件,wsgi.py,内容如下:
from app import create_app application = create_app() if __name__ == '__main__':
application.run()
3.启动命令:
gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application
验证结果:
这时候通过命令请求url,可以看到响应结果。这样gunicorn就配置好了
curl http://127.0.0.1:8000 /users
配置nginx:
安装nginx:
yum -y install nginx
如果提示没有可用的软件包,解决办法:Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包
如果启动nginx失败,因为80端口号被占用,解决办法:centos7 ngxin启动失败:Job for nginx.service failed(80端口被占用的解决办法)
验证结果:
启动nginx后,打开浏览器输入http://10.2.1.92:8001(8001是nginx使用的端口)
看到如下界面,表示nginx环境搭建完毕

配置使用nginx代理gunicorn服务
具体配置参照:gunicorn+nginx配置方法
验证结果:
验证结果前,要确保gunicorn是启动的

配置supervisor管理gunicorn进程(启动|重启|关闭)
最后使用supervisor后台启动gunicorn进程,否则一关掉命令窗口,gunicorn进程也被杀死了,这当然不是大家希望看到的结果
supervisor的配置方法,参照supervisor的使用
验证结果:
通过supervisor启动gunicorn之后,关掉命令行窗口,注意器访问 A地址/路由地址(A地址是什么,参照上图),可以看到正确的响应结果,表示supervisor成功启动了gunicorn
这样nginx+gunicorn+supervisor布署flask项目就配置好了。
配置项目更新,自动布署:
如果想要实现更新flask项目,自动布署,可以借助jenkins与gitlab的web-hook功能。
具体配置方法(只看前面与gitlab的配置即可,后面写的很乱,不用看):如何创建一个项目,让gitlab自动触发jenkins进行构建
验证结果:
在项目中新建1个测试文件:test.py,提交到仓库
在服务器~/.jenkins/workspace/job名称下查看,也存在test.py文件,即表示自动布署配置成功
具体的配置不太清楚时,可以看看这1篇,写的很乱,但可能会记录一些具体配置
【疑问】
为什么每次自动布署之后,请求接口请求到的内容还是之前的内容呢?
但是这样做之后,再更新接口,内容就更新过来了?(杀掉supervisor进程,再重启)
centOS7 flask项目布署的更多相关文章
- flask环境布署--废弃不用,只留作备份
[前置条件] 创建1个flask-demo,生成requirement.txt文件(下载好gunicorn),上传至git.创建demo参照:创建一个flask api-demo(响应体显示中文) g ...
- centos7使用wordpress布署网站(2)
1.接下来需要配置数据库,为使用wordpress做准备 修改认证方式: vim .../phpMyAdmin/config.inc.php [...] $cfg['Servers'][$i]['au ...
- centos7使用wordpress布署网站(1)
环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP)腾迅云主机CentOS 7.4.Apache .MariaDB .PHP 1.安装apache.m ...
- 部署Flask项目到腾讯云服务器CentOS7
部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...
- CentOS7 Nodejs布署环境
一.服务器设置:https://www.youtube.com/watch?v=1OU5ngq-WyM&list=PLQlWzK5tU-gDyxC1JTpyC2avvJlt3hrIh& ...
- 使用virtualenv, uwsgi, nginx来布署flask
本文讲述了怎样使用virtualenv, uwsgi, nginx来布署flask的步骤. 升级软件包 运行下面命令,保证你的机器安装了最新的软件包. sudo apt-get update sudo ...
- 从pip+requirements.txt+virtualenv管理依赖到使用pipenv管理依赖-修改布署方式
背景: 已经使用pip+requirements.txt+virtualenv管理了项目一段时间,为了不要每次都 导出依赖(本地),安装依赖(服务器) 现在要使用pipenv来管理项目的依赖关系 思路 ...
- 学习Linux系列--布署常用服务
本系列文章记录了个人学习过程的点点滴滴. 回到目录 10.mediawiki 知名开源维基框架,我用来构建自己的知识库. 在mediawiki中新建一个http.conf文件 sudo vim /op ...
- vs调试windows mobile程序时布署时间太长的解决办法
vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...
随机推荐
- Redis5以上版本伪集群搭建(高可用集群模式)
redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地 ...
- mysql占用磁盘IO过高的解决办法
一.现象 最近发现Mysql服务器磁盘IO一直很高 [root@push-- ~]# iostat -k -d -x Linux -.el7.x86_64 (push--) 2019年07月05日 _ ...
- 【学习】024 springCloud
单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子 ...
- [bzoj4358]permu:莫队+线段树/回滚莫队
这道题是几天前水过去的,现在快没印象了,水一发. 首先我们看到它让求解的是最长的值域 连续段长度,很好. 然后就想到了山海经,但但是我还没有做. 然后又想到了很久以前的一次考试的T3旅馆hotel(我 ...
- JVM垃圾回收之CMS收集器
从前文JVM垃圾回收几种常见算法和常见收集器我们知道,CMS是老年代垃圾收集器.CMS 收集器主要关注系统停顿时间.CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从 ...
- shell之文本过滤(awk)
shell之文本过滤(awk) 分类: linux shell脚本学习2012-09-19 15:53 1241人阅读 评论(0) 收藏 举报 shell正则表达式脚本任务语言 如果要格式化报文或从一 ...
- java常用类与包装类--常用类字符串String类、StringBuffer类、Stringbuilder类
1.String类 1.1String类的概念和储存结构: (1)字符串是一个比较特殊的对象,可以使用new,也可以不使用new来创建字符串对象 String s1 = new String(&quo ...
- scikit-plot
安装说明 安装Scikit-plot非常简单,直接用命令: pip install scikit-plot 即可完成安装. 仓库地址: https://github.com/reiinakano/sc ...
- 【NOIP2016提高A组模拟10.15】打膈膜
题目 分析 贪心, 先将怪物按生命值从小到大排序(显然按这个顺序打是最优的) 枚举可以发对少次群体攻击, 首先将所有的群体攻击发出去, 然后一个一个怪物打,当当前怪物生命值大于2,如果还有魔法值就放重 ...
- anaconda历史版本下载
anaconda历史版本安装: anaconda所有版本链接:https://repo.continuum.io/archive/ 清华大学开源软件镜像站:https://mirrors.tuna.t ...