LineBot - 部署 api

程序已经写好了,现在就是要换一个地方放,可以考虑的方向有云端或是自架站台。
云端的话,比较简单,但是比较资安方面可能会比较让人担心,因为你的帐号,密码,都需要放到云端去,如果要交易功能的话,连金钥都要放到云端去,所以想走这条路的朋友要自己好好考虑。
另一条路就是自架站台,自架站台有几个关键

  • 主机
  • 域名
  • https 凭证
  • 可以设定的 router
  • 固定 ip 或是 ddns

主机的话,我想应该是比较简单取得的,花钱就行,甚至树莓派 (raspberry pi) 就可以拿来用了,域名的话,如果不想买,也有免费的域名可以去申请,只是名称比较没那麽自由而已,https 凭证的话,可以使用免费的 let's encrypt,再来就是可以设定的 router,因为要设定 port forwarding,将相关的 request 指给我们的主机,最後就是 ip,如果有固定 ip 的话,可以直接指定给域名,如果没有固定 ip 的话,就需要 ddns 服务,在主机上还要执行一个程序,在 ip 变动的时候,去更新域名绑定的 ip。
这次的分享,主要还是在 Shioaji api,所以就先放到云端去,原本放在 gcp 的 app engine,可是测试了半天,发现在取得报价的时候,常常会失败,相关原因还不清楚,後来就改用了 Heroko。虽然还是有机会失败,不过拿来 demo 倒是还可以,之後如果正式使用,想要稳定一点的环境,可以考虑花点钱解决,免费版的规格大概如下,比较要注意的是 30 分钟没有操作的话,会进眠,再一次启动会花一些时间启动,反应会慢一点。
heroku free plan

云端 自架
难易
安全 帐号密码放云端,要注意 网路的防火墙,主机的安全性漏洞要自己处理
前置技能 云端平台的操作技能 1. 主机, 2. 域名, 3. https 凭证 4. router 设定 5. 固定 ip 或是 ddns

如果想要用 Heroku 试试的话,可以照以下的步骤来完成:

  • Heroku 注册
  • Create New App (建立新app),app name 随意填,region 目前只有美国可以选。
    heroku new app
  • 安装 Heroku CLI
  • 在自己要上传的专案安装 gunicorn
pip install gunicorn
  • 建立 Procfile, 内容如下
web gunicorn main:app
# main 是我们程序的档案名称 (main.py)
# app 是 flask 的实体名称 app = Flask(__name__)
# 如果你的名字和我不一样,记得自己改喔

Procfile 是跟 heroku 指定部署完後,要执行什麽档案,如果你有其它的规画,可以改这个档

  • 建立 runtime.txt 档
python-3.7.11

这个档案是指定我们要用哪个版本的 python 来执行,如果没有指定的话,没有指定的话,就是最新版,因为 shioaji 目前只有支援到 3.7,所以这里就指定 3.7.11

  • 再来就是要把我们的专案用 git 方法推到 heroku 去,官网有详细指令,不过我这还是列在下面
# 登入
heroku login

# 到自己的专案目录下
cd my-project/

# 初始化 git
git init

# 建立 heroku 远端分支
heroku git:remote -a [刚刚输入的 app name]

# stage 所有档案
git add .
# commit 
git commit -am "[commit 备注]"
# 推送到 heroku
git push heroku master

在推送到 heroku 之後就会自动建置,然後执行我们在 procfile 指定的指令。结束後,可以看到以下画面

heroku deploy

可以在那找到自己 app 的网址,把这个网址复制下来,贴到 Line Messaging API 里的 Webhook URL,就可以在 line 里使用了。


<<:  EP20 - 整合 Jenkins 自动部署到 EKS

>>:  Day17:终於要进去新手村了-Javascript-回圈-while简单举例练习

[C 语言笔记--Day27] 6.S081 Lab syscall: Sysinfo ( II )

接续昨天写到一半的题目, 昨天还留下了 sys_sysinfo() 没有完成, 先来大致上分析一下这...

自动化 End-End 测试 Nightwatch.js 之踩雷笔记:getCssProperty()

getCssProperty() 是 Nighwatch 中用来取得 DOM element 的 c...

Day 11:Router 怎麽绕-router-link、router-view

大家应该也发现到了,目前点选 Navbar 项目并没有任何反应;但是点选公版中的 Home 和 Ab...

连续 30 天 玩玩看 ProtoPie

做事情都要有个为什麽 人是很奇怪的动物,心中会有很多对某些事情的想像,总是一件又一件的想去做。 决定...

[Day 4] 三大法人资料(FinMind )

前言 如果是从上一篇来的读者可能会很奇怪,不是说要用爬虫抓三大法人资料吗?怎麽换标题了,而且连题目的...