侧边栏壁纸
博主头像
Wyatt博主等级

Done is better than perfect!

  • 累计撰写 103 篇文章
  • 累计创建 31 个标签
  • 累计收到 7 条评论

Heroku与Github集成部署Web应用

Wyatt
2021-03-18 / 0 评论 / 0 点赞 / 1,191 阅读 / 2,783 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-03-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一. 简介

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

asciicast

3.3 在目标目录Clone GitHub项目

git clone git@github.com:wyattup/CS551P_Project.git(此处替换为自己的git项目)

asciicast

3.4 创建Heroku App项目

执行如下命令行,即可创建App。不过,由于App名称是唯一的,所以需要注意是否创建成功。
要用Heroku注册一个新应用,需要在应用程序根目录下使用apps:create子命令,并将应用程序名称作为唯一参数传递:

heroku apps:create flask-wyatt

上面的flask-wyatt这个名称可以自定义。

asciicast

通过如下指令,可以查看已经创建的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

asciicast

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个小时的限制内合理的让应用存活。
解决方法

4.2 Heroku可视化绑定Github

Heroku CLI方式过渡繁琐,希望采用可视化的操作来满足要求
解决方法:

  • 页面上绑定GitHub指定仓库,并配置自动化构建。
    按照步骤执行
  • 同时,在setting里面配置build packs语言,当前选择Python
    配置build packs

五. 总结

这是一个最简单的CICD项目。在这个基于Flask框架的Python项目中,我们可以使用到很多的技术栈,例如Git,Github,BuildPacks,SSH等。内容不难,但是需要我们对每个指令都很熟悉。同时,我们也要擅于利用工具,对免费项目的部署学习提供便利。
在DevOps这条大道上,我们还需要继续深入。

0

评论区