先用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进程,再重启)

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

centOS7 flask项目布署的更多相关文章

  1. flask环境布署--废弃不用,只留作备份

    [前置条件] 创建1个flask-demo,生成requirement.txt文件(下载好gunicorn),上传至git.创建demo参照:创建一个flask api-demo(响应体显示中文) g ...

  2. centos7使用wordpress布署网站(2)

    1.接下来需要配置数据库,为使用wordpress做准备 修改认证方式: vim .../phpMyAdmin/config.inc.php [...] $cfg['Servers'][$i]['au ...

  3. centos7使用wordpress布署网站(1)

    环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP)腾迅云主机CentOS 7.4.Apache .MariaDB .PHP 1.安装apache.m ...

  4. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  5. CentOS7 Nodejs布署环境

    一.服务器设置:https://www.youtube.com/watch?v=1OU5ngq-WyM&list=PLQlWzK5tU-gDyxC1JTpyC2avvJlt3hrIh& ...

  6. 使用virtualenv, uwsgi, nginx来布署flask

    本文讲述了怎样使用virtualenv, uwsgi, nginx来布署flask的步骤. 升级软件包 运行下面命令,保证你的机器安装了最新的软件包. sudo apt-get update sudo ...

  7. 从pip+requirements.txt+virtualenv管理依赖到使用pipenv管理依赖-修改布署方式

    背景: 已经使用pip+requirements.txt+virtualenv管理了项目一段时间,为了不要每次都 导出依赖(本地),安装依赖(服务器) 现在要使用pipenv来管理项目的依赖关系 思路 ...

  8. 学习Linux系列--布署常用服务

    本系列文章记录了个人学习过程的点点滴滴. 回到目录 10.mediawiki 知名开源维基框架,我用来构建自己的知识库. 在mediawiki中新建一个http.conf文件 sudo vim /op ...

  9. vs调试windows mobile程序时布署时间太长的解决办法

    vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...

随机推荐

  1. sql server查询在线用户

    select request_session_id spid, object_name(resource_associated_entity_id) tableName from sys.dm_tra ...

  2. python grobal 的使用方法

    写一个功能,运行报错,name 'number' is used prior to global declaration ,查资料梳理一下 因为这个函数需要调用多次,第一次调用的时候,走if语句,后面 ...

  3. Codeforces Round #575 (Div. 3) B. Odd Sum Segments (构造,数学)

    B. Odd Sum Segments time limit per test3 seconds memory limit per test256 megabytes inputstandard in ...

  4. vs开发之工程属性

    1.建立工程 最好使用自己创建工程 然后把代码移过去 2.不要使用别人建立的工程直接导入(差异比较大的话),后面32位 64位 配置属性 可能造成冲突 3.冲突了 还需要重新做 上面 1

  5. UILabel的行间距,字间距处理

    啥都不说了,直接上代码,做了一个Category #import <UIKit/UIKit.h> @interface UILabel (ChangeLineSpaceAndWordSpa ...

  6. 深入理解JAVA虚拟机 虚拟机字节码执行引擎

    执行引擎 执行引擎是java虚拟机的重要组成部分.它的作用是接收字节码,解析字节码,执行并输出执行结果. 虚拟机是相对于物理机的概念,物理机的执行引擎是直接建立在处理器.寄存器.指令集和操作系统的层面 ...

  7. 解决:java compiler level does not match the version of the installed java project facet错误

    java compiler level does not match the version of the installed java project facet错误的解决 因工作的关系,Eclip ...

  8. 虚拟机安装 Output error file to the following location

    有的用户会对你中安装虚拟机系统,但偶尔会在安装过程中遇到一些问题.比如在电脑安装虚拟机系统时出现提示“Output error file to the following location”,这一般是 ...

  9. php如何实现大文件断点续传-php文件

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  10. JAVA批量文件下载

    1,看看我们封装的方法 方法中有三个参数:视频url,文件夹路径,视频名称. 调用方法进行下载. 2,看看结果 打印结果 文件夹下的视频下载成功 详细的参数配置可以参考我写的这篇文章:http://b ...