一. 简介
Heroku是首批PaaS平台之一。它以Ruby的应用程序的托管服务开始,随后逐渐发展到支持诸多其他语言,如Java,Node.js和Python。
在Heroku中部署Web应用程序主要是通过git版本控制工具完成的,因此你必须将应用程序放在git代码库中。 Heroku在应用程序的根目录中查找名为Procfile的文件,以获取有关如何启动应用程序的描述。 对于Python项目,Heroku还期望requirements.txt文件列出需要安装的所有模块依赖项。
在通过git将应用程序上传到Heroku的服务器之后,你的工作基本就完成了,只需等待几秒钟,应用程序就会上线。
二. 架构
+--------------------+ +--------+ +-----------+
| Local | | GitHub | | Heroku |
| | +--------+ +-----------+
+--------------------+ | |
| | |
| Git Push | |
|------------------------>| |
| | |
| | |
| | Deployment Event |
| |--------------------------------->|
| | |
| | Deployment Status (pending) |
| |<---------------------------------|
| | |
| | |
| | Deployment Status (success) |
| |<---------------------------------|
| | |
三. 操作流程
3.1 创建Heroku账户
heroku链接,在此官网注册账户即可。Heroku提供了一个名为Heroku CLI的命令行工具来与服务交互,可安装于Windows,Mac OS X和Linux。
3.2 Heroku CLI 登陆
当输入如下指令时,页面会跳至浏览器授权,点击确认即可。
heroku login
3.3 在目标目录Clone GitHub项目
git clone git@github.com:wyattup/CS551P_Project.git(此处替换为自己的git项目)
3.4 创建Heroku App项目
执行如下命令行,即可创建App。不过,由于App名称是唯一的,所以需要注意是否创建成功。
要用Heroku注册一个新应用,需要在应用程序根目录下使用apps:create子命令,并将应用程序名称作为唯一参数传递:
heroku apps:create flask-wyatt
上面的flask-wyatt这个名称可以自定义。
通过如下指令,可以查看已经创建的apps
heroku apps
3.5 Heroku与Github remote绑定
heroku git:remote -a 这里输入app的名称
# git 与 ‘flask-wyatt’ app绑定
heroku git:remote -a flask-wyatt
# 检查是否绑定
git remote -v
3.6 Heroku推送部署
当前目录进行git push操作即可
git push heroku main
image.png
3.6 Heroku网页端
打开当前的App页面,可以查看build logs以及app的地址
image.png
当前app的查看地址如下:flask-wyatt.herokuapp.com
四. 问题归纳
4.1 Heroku免费版每30min会休眠
还有一个限制就是一天之内最长存活时间不能大于18个小时,所以当前问题就是要解决如何在18个小时的限制内合理的让应用存活。
解决方法
- 利用免费的在线监控平台进行HTTPS定期轮询
uptimerobot.com平台
配置如图
监控效果
4.2 Heroku可视化绑定Github
Heroku CLI方式过渡繁琐,希望采用可视化的操作来满足要求
解决方法:
-
页面上绑定GitHub指定仓库,并配置自动化构建。
按照步骤执行 -
同时,在setting里面配置build packs语言,当前选择Python
配置build packs
五. 总结
这是一个最简单的CICD项目。在这个基于Flask框架的Python项目中,我们可以使用到很多的技术栈,例如Git,Github,BuildPacks,SSH等。内容不难,但是需要我们对每个指令都很熟悉。同时,我们也要擅于利用工具,对免费项目的部署学习提供便利。
在DevOps这条大道上,我们还需要继续深入。
网友评论