flask项目实现自动化部署

Flask的优点:

1.简单。flask是主要应对小型或者快速构建的项目,故没有像Django那样大而全,集成了很多的组件,不管你是否用没用得到。如果说Django是一个精装的房子,那么flask就是毛培房。使用Django的项目,大部分的布局等都是相似的,因为已经装修完毕了,大同小异。而使用flask的话,如何装修,如何设计都是自己搞定的,所以每个flask项目的相异性较大。

2.使用简单。官方的使用指南清晰的介绍了Flask的运行过程。官方指南(中文版)

3.部署简单。本地运行不需要安装其他的软件,只需要python基本的环境(一般来说:本地测试直接运行即可)。如需要在服务器上运行,以支撑起整个项目,则需要配置uwsgi+nginx。因为需要考虑到并发性、异步性(尽管可以在启动run()里加入一些参数实现异步)。

Flask的安装

Flask安装教程(包含多种安装方式),建议不要直接pip,而是先安装:虚拟环境创建工具virtualenv,为每一个项目创建一个虚拟环境,这样不会引起版本冲突。

pip install virtualenv  ---安装虚拟环境

cd your_project_dir  ---进入你的项目目录

virtualenv  venv---创建目录名(自定义),在venv文件夹中,包含了python的可执行文件,以及pip库的拷贝,这样就可以安装flask包了,前提是激活该项目的虚拟环境,否则还是会安装在系统环境下

source venv/bin/activate   ---激活虚拟环境

服务器上配置:

uwsgi+nginx配置,如果不使用Nginx也是可以实现项目的运行支撑的,但是Nginx可以保证负载均衡(如果有多个运行项目的话)以及安全性。一般配置nginx作为前端代理,uwsgi作为后端代理,其实这样称呼并不准确,但只是相对的。nginx用来处理静态请求,若是动态请求由nginx转发至uwsgi进行处理。具体作用见:NgInx的作用

先安装uwsgi,可直接pip系统安装,或者在虚拟环境中安装;

pip install uwsgi 

        在你的项目根目录下创建一个uwsgiconfig.ini(uwsgi支持多种配置文件格式:ini、xml、json等),其实不是必须在根目录下创建,只要能找到该文件并启动即可,在根目录下创建是方便修改。


Nginx安装:参考:nginx安装及基本操作语法

        nginx的配置文件:可能存在大量的注释,我们需要放开注释并且可能进行修改;这里就不全部显示了,仅介绍主要的配置:

        只要我们把代码上传到服务器上,运行uwsgiconfig.ini文件,即可让我们的flask项目运行,并能向前提供服务。但在开发过程中,我们每次修改代码或者新增功能并且在本地测试好了之后,想要通过公网访问我们的修改的或者新增的功能,就得把当前改变上传到服务器上,并且重新启动uwsgi服务器。这样每次代码有改动,都得先上传到服务器,再重新启动uwsgiconfig.ini文件,很是麻烦,所以我们期望找到一种自动化的工具,能帮我们自动上传代码,重新启动uwsgi服务器,jenkins就是我们所需要的工具。

代码托管平台:github、coding、Bitbucket等:

       也就是将你的项目放在托管平台上进行托管,方便协作开发,代码集成。这里是用了coding做说明,后面将说明coding的一些配置。

jenkins持续集成:

 jenkins安装配置

注意jenkins是基于java的,所以需要jdk环境并且在jenkins配置文件中设置。

service jenkins start   ---启动jenkins 

在浏览器输入  http://公网ip: 8080 (默认)访问jenkins页面(php界面)。

1.安装jenkins需要的插件: 系统管理->插件管理->可选插件->右上角搜索:

    coding_webhook插件通过与coding上的项目的hook建立链接,当coding上代码有更新时,jenkins也会进行更新;publish_over_ssh插件是用来实现远程部署。

2.系统配置:

          首先,在服务器上生成公钥:ssh-keygen -t rsa  ;按3个回车,密码为空。默认会在 ~/.ssh目录生成两个文件: id_rsa私钥,id_rsa.pub公钥。known_hosts文件会记录ssh密钥登陆的主机列表。

          接着,在系统管理->系统配置的publish_over_ssh中:


       在remote_directory下面的高级中:


然后保存即完后ssh的配置;

构建项目:

新建任务->:


基础设置:

源码管理:


触发器构建:

触发器构建时,需要配置coding上的webhook:



触发器设置:


构建环境:不做任何改变

构建:

选择增加构建后操作,方式选择SSH,目的是为了让服务器重启uwsgiconfig.ini文件,实现自动化部署。


最后保存即可;

run.sh脚本说明:


到此,你的代码在托管工具coding上更新之后,会通知绑定的jenkins,jenkins一并更新,并上传到服务器指定目录,最后通过执行脚本重启uwsgi服务器,实现自动化部署。

注意事项:

        flask项目的启动文件的应用变量中的参数应该设置0.0.0.0或者不设置,也不要设置成调试模式,否则公网可能访问不到;(这里没有去了解参数设置,仅仅是随便看了网上的一些解决方法照搬的);

        服务器上也要安装git,同时在jenkins全局工具管理中配置;

        首次登录jenkins之后密码可能会消失,如果你记不得了的话,按照这个方法进行重新配置;管理员密码重置

        如果自动化部署没问题,代码在本地也没问题,上传上去发现项目运行报错,排除bug等原因。那么可能是py包的问题,我就遇到了包的版本问题,最后发现是pymongo的2.8之前不兼容;

        在uwsgi配置中你指定的运行日志文件中,可以看到报错的信息,shift+g可以跳转到底部查错;

        时间过得有点久了,所以可能一些细节没解释清楚或者错了,但总体方向还是对的,希望大家不要建议。








©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容