Day13 - [丰收款] 将Django程序,放上Heroku!

昨天撰写了一版最基础的Django网站测试後,接着我们要来尝试将网站布署到云端平台,让API有机会能够将PayToken传入(这是我们的目的)。

在目前的云端服务中,有一种是所谓的IaaS (Infrastructure as a Service), 也就是我们需要在云端服务中自行建立一台虚拟主机,并且在上面完整的将环境建立起来,例如Amazon AWS、Google GCP、Microsoft Azure等。这个优点自然是有高度的弹性与自由,当然所需要的服务器管理、环境建置与布署的技能都相对来的高。

而另一种云端服务称之为PaaS (Platform as a Service),则是提供已经具备完整可运行环境的平台,云端用户不会触摸到完整的虚拟主机环境,仅需专注在应用程序的布署这件事上面。对於开发者而言,只需要将所需要执行的应用程序以及执行环境相关的套件需求定义好,按照PaaS平台的布署流程进行就可以轻松的将程序放到云端执行。当然,相对的这是优点也是缺点,因为你势必会这样的便利性下对缺少自由与弹性进行妥协。另外因为不同的PaaS一定多多少少都会有特殊独有的布署或设定方式,因此未来要移转至其他平台时,某部份的设定方式可能无法直接无痛移转。

你要有租一间空房所有家俱陈设都要自己决定,还是想要一卡皮箱就可入住的公寓式酒店?绝对没有另一个好哪一个坏,端看个人当下的需求而定。也有人初期希望能简单舒服不用烦恼太多,但等待一切上轨道再搬到可自由运用空间自行决定家俱的空屋,这样也很好。

就是你了,Heroku!

这次选择使用可以运行Django专案的PaaS平台,就是知名的Heroku。当然Heroku是以提供Ruby云端执行环境所起家的,後来愈来愈全面後也可以运行其他语言、框架的环境,例如Java、Node.js、Python、PHP、Go…等。Heroku由於有一个最基础的Free版本可提供给使用者运用,对於拿来写这种验证式POC专案是再适合不过的了,当然既然是免费的就会有所限制,有兴趣的朋友需要先行了解,若有兴趣也可以升级成付费方案。

若想要快速将Django网站布署到Heroku上,首先当然要先注册申请成为会员,在此推荐Django Girls Taipei的Django Heroku布署教学,写的很清楚易懂。

先进行Heroku的帐号注册,接着安装Heroku CLI (Command Line Interface)工具,透过CLI可直接透过Terminal模式进行个人Heroku Apps的管理工作。其中最关键的就是透过Terminal进行帐号登入,一来是会将此帐号与Git作身份绑定 (Heroku需透过Git管理上传你的网站程序码),二来是可透过工具建立相关的Herou App来完成基础设定。

进行Heroku login
https://ithelp.ithome.com.tw/upload/images/20210928/20130354Oa7fsIvHKB.png

开启网页进行登入
https://ithelp.ithome.com.tw/upload/images/20210927/20130354Uyi5pfPQ74.png

建立Heroku App
https://ithelp.ithome.com.tw/upload/images/20210927/20130354f1ffd41lTs.png

将Git与Remote Heroku作绑定
https://ithelp.ithome.com.tw/upload/images/20210927/20130354PcwPT0kpGF.png

於本机设定production环境所需要的设定档,与dev环境分开
https://ithelp.ithome.com.tw/upload/images/20210927/20130354IIbuMt13Qe.png

接着将本地档案进行Git add、commit、push,若成功会看到Verfifying deploy... done字样。
https://ithelp.ithome.com.tw/upload/images/20210927/20130354B0CDXe4MCZ.png

再来就是执行Heruku初始化相关作业,包含初始化资料库与建立superuser等。
https://ithelp.ithome.com.tw/upload/images/20210927/20130354ucudFjma1U.png

上述的执行细节就不细谈,包含了WSGI、requirements.txt档、Procfile等的准备与设定,有兴趣可参考前述文章。有些小地方仍需注意,例如Postgres的psycopg2目前我是使用2.9.1版本才能成功。

最後我们顺利将本机的KummyShop网站布署到Heroku的平台上,并且使用昨天的greetings页面进行测试。带入一些参数试试看,也能成功运作,太好了。
https://ithelp.ithome.com.tw/upload/images/20210927/201303548CkvTv5Yum.png

不过Heroku因为有一些使用上的限制,除了Free版本提供的资源受限与会强制休眠等机制外,本身不支援SQLite(主要以PostgresSQL为主)也会连带需要带整既有作法,再来还有静态档案引用需作转换等,一些细小的细节仍然需要花时间测试过。

今天就先这样了,明天再努力。


<<:  IT 铁人赛 k8s 入门30天 -- day14 K8s Services explained

>>:  离职倒数3天:东京男子图监

[13th][Day3] 保留字

about Reserved Words 保留字就像 go 原本就捏好的黏土,并有其特别的意义 保留...

【Day 30】结语

不知不觉也来到了第 30 篇,虽然说这是一个三十天的学习纪录,但是却是花了我将近两个月的时间让这个课...

【元件如何正确使用 ?】元件耦合性三大原则 : ADP、SDP、SAP

最少改动 x 最大收益 大纲 简单的任务 ? 神奇的软件 耦合性三大原则 ADP , 无环依赖原则 ...

DAY26-ASP.NET 加入RWD响应式网页 事前准备(先了解rwd)

先说甚麽是RWD响应式网页 有些人会叫他自适应网页设计、回应式网页设计、对应式网页设计 其实都一样 ...

[Day15] Flutter with GetX Wrap & Chip

Wrap & Chip 原生的Widget, 对於之前接触iOS的人来说一开始看到有惊讶一下...