Day 29:专案07 - 天气小助理03 | Heroku云端平台

图片来源:https://www.lohaslife.cc/archives/18537

昨天最後遇到的问题是,目前电脑都是在我们的电脑上执行,而且是手动触发的,有没有办法自动化的完成这个任务呢?

答案是有的,今天将接续前两天的内容,将天气小助理的专案部属到Heroku云端平台上,建议读者先看完前两天的文章再来看这篇哦!

Heroku

Heroku是一个平台即服务(PaaS)的云端平台,支援多种程序语言,包括Ruby、Node.js、Java、Python...。如果是第一次听到云端平台的人,可以将它想像成有一台远端且永远都是开机状态的电脑,你可以将你的程序透过网路上传至这台电脑,并由它帮你执行程序。

接下来教你如何将专案部属到Heroku上,在此之前要先将天气小助理的专案完成,这里有专案完整原始码提供参考。

安装Git

Git是一个分散式的版本控制系统,平常除了帮助开发者进行版本控制外,也要透过Git将专案推送到Heroku的Git Repository,进行专案的管理以及部署。

Git官网,根据作业系统安装最新版本的Git。

安装完成後,在CMD输入git --version,有出现版本号码就表示有安装成功。

安装Heroku CLI

Heroku利用Git部署专案,并提供了CLI(Command-Line Interface),透过指令操作Heroku云端平台,让部署流程更加容易。

来到Heroku Dev Center,点下方的「The Heroku CLI」。

找到「Download and install」,根据你的作业系统做安装。

下载的是一个执行档,执行後依照步骤安装即可。

安装完成後,在CMD输入heroku验证是否安装成功。

注册Heroku帐号

但是要有帐号才能进行部署,所以先回到Heroku Dev Center,点击「Sign up」注册帐号。

注册好了之後,因为我们再来会使用Heroku Scheduler这个额外的服务,因此需要填写信用卡的资料,不过不用太担心,再免费额度用完之前都是不会花到你半毛钱的。

点击头像後,点「Account settings」。

选择「Billing」,新增你的信用卡资讯。

建立Heroku应用程序

接着,我们要在Heroku云端平台上建立应用程序,来存放我们天气小助手的专案。

先在CMD输入heroku login登入Heroku。执行後会导向一个Heroku登入网页。

登入完关掉网页回到CMD,就已经登入完成了。

接着建立应用程序,特别注意应用程序的名称不可以重复。

heroku create <你的应用程序名称>

完成後会产生一组应用程序的连结远端Git Repository,待会的专案就是要推送到这个Repository上。

建立一个新资料夹,将专案程序放在资料夹中,为了呼叫方便,於是将程序名称改名为app.py

为了让Heroku平台知道这个专案需要安装那些套件,新增requirements.txt档来纪录套件和版本的要求。照理来说要建立一个虚拟环境,安装完必要套件後,用pip freeze > requirements.txt产生,但处理起来满花时间的,这边就直接提供这个专案requirements.txt的内容吧!

requests
certifi>=2017.4.17
idna<3,>=2.5
chardet<5,>=3.0.2
urllib3<1.27,>=1.21.1

下一步,在CMD上移动到专案资料夹的位置,并建立本地端的Repository。

cd /你的专案资料夹路径
git init

接着,使用以下四个指令,将专案推送到Heroku云端平台。有用过git的人应该明白这就是将本地Repository推送到远端Repository的过程。

git add .  # 将专案加入到本地端Repository
git commit -m "first commit"  # 新增版本纪录
heroku git:remote -a <你的应用程序名称>  # 将Heroku云端平台的Repository切换到你的应用程序
git push heroku master  # 将专案推送到Heroku云端平台的Repository

最後一个指令要等待Heroku安装一些东西,需要一点时间,完成後如果出现这个画面,就表示成功推送专案到云端平台了!。

应用程序测试

回到Heroku的Dashboard,应该就已经有刚才建好的应用程序了。

要测试的话,点「More」并选择「Run console」。

输入python app.py,有收到讯息就成功了!

建立Heroku Scheduler

真的是最後一步了! 我们要使用Heroku Scheduler这个服务,达成每天固定时间执行专案的任务。

在专案中「Resource」下方「Add-ons」搜寻Heroku Scheduler,并点击它。

下一个视窗中,选择「Standard-Free」(免费版)。

接着点击「Heroku Scheduler」服务,在新的分页中,点击「Create job」。

选择排程的时间,因为我们希望每天固定时间执行,所以选择「Every day at...」,後面接执行时间,要注意到Heroku Scheduler采用UTC(世界协调时间),所以台湾的时间要减8小时才是UTC时间,像专案中希望每天早上6点执行,时间就要设定为晚上10点

执行的指令就和刚才测试的一样,完成设定後按「Save job」。

排程会列在这边,未来想修改或删除都可以。

最後要做的事就是去睡觉,等待明天一早起来的通知啦~

图片来源:https://unsplash.com/photos/uy5t-CJuIK4

参考文章:[Python爬虫教学]教你如何部署Python网页爬虫至Heroku云端平台

小结

故事的结尾,小明来找你道谢,他说他至从有了天气小助理之後,每天出门前都会收到通知,再也没有忘记带雨伞过了。而且因为有暖心提醒,让他觉得有人在关心他,甚至会开始期待明天的提醒,或许是因为这样,整个人的气色也变好了,真是可喜可贺可喜可贺~

我们来复习一下这三天做了什麽事,前天是使用气象资料的API,昨天是推送LINE Notify讯息,今天则是将专题部署到Heroku云端平台和设定时间排程器!

天气小助理的专案到这边结束,这也是最後一个专案。明天就是铁人赛最後一天了,我打算做个总复习和写点完赛心得,那麽,我们明天不见不散!


如果喜欢这系列文章麻烦帮我按Like加订阅,你的支持是我创作最大的动力~

本系列文章以及范例程序码都同步更新在GitHub上,後续会持续的更新,如果喜欢也麻烦帮我按个星星吧~

有任何问题或建议,都欢迎在底下留言区提出,还请大家多多指教。


<<:  [Day26] swift & kotlin 游戏篇!(8) 小鸡BB-游戏制作-历史纪录

>>:  Day19 将电脑接上数据机和网路线

【第二天 - Git 泄漏】

Q1. Git 是什麽? Git 是一个分散式版本控管软件,每个开发者手中都会有完整的一份副本,包含...

资安稽核篇

本来打算把稽核与风险管理和在一篇的, 後来想想,决定先发一篇稽核的惹。 稽核也是我不熟的领域, 大概...

Day 11 - 物品借用纪录系统 (3) 发送到期与逾期通知

我们昨天顺利把借物归还事件可以自动化上传到 Google Calendar 上,但是如果借阅人不看 ...

Day22【JS】ES6 动态计算属性名 Computed property names

在 ES6 以前,要取得物件只能用 物件.属姓名 或 物件[属姓名] 这样的写法。 其中 [] 内只...

(Day 20) Object.create 建立多层继承

上回介绍了如何使用建构式来建立原型,接着今天介绍使用 Object.create() 建立多层原型,...