程式已經寫好了,現在就是要換一個地方放,可以考慮的方向有雲端或是自架站台。
雲端的話,比較簡單,但是比較資安方面可能會比較讓人擔心,因為你的帳號,密碼,都需要放到雲端去,如果要交易功能的話,連金鑰都要放到雲端去,所以想走這條路的朋友要自己好好考慮。
另一條路就是自架站台,自架站台有幾個關鍵
主機的話,我想應該是比較簡單取得的,花錢就行,甚至樹莓派 (raspberry pi) 就可以拿來用了,域名的話,如果不想買,也有免費的域名可以去申請,只是名稱比較沒那麼自由而已,https 憑證的話,可以使用免費的 let's encrypt,再來就是可以設定的 router,因為要設定 port forwarding,將相關的 request 指給我們的主機,最後就是 ip,如果有固定 ip 的話,可以直接指定給域名,如果沒有固定 ip 的話,就需要 ddns 服務,在主機上還要執行一個程式,在 ip 變動的時候,去更新域名綁定的 ip。
這次的分享,主要還是在 Shioaji api,所以就先放到雲端去,原本放在 gcp 的 app engine,可是測試了半天,發現在取得報價的時候,常常會失敗,相關原因還不清楚,後來就改用了 Heroko。雖然還是有機會失敗,不過拿來 demo 倒是還可以,之後如果正式使用,想要穩定一點的環境,可以考慮花點錢解決,免費版的規格大概如下,比較要注意的是 30 分鐘沒有操作的話,會進眠,再一次啟動會花一些時間啟動,反應會慢一點。
雲端 | 自架 | |
---|---|---|
難易 | 易 | 難 |
安全 | 帳號密碼放雲端,要注意 | 網路的防火牆,主機的安全性漏洞要自己處理 |
前置技能 | 雲端平台的操作技能 | 1. 主機, 2. 域名, 3. https 憑證 4. router 設定 5. 固定 ip 或是 ddns |
如果想要用 Heroku 試試的話,可以照以下的步驟來完成:
pip install gunicorn
web gunicorn main:app
# main 是我們程式的檔案名稱 (main.py)
# app 是 flask 的實體名稱 app = Flask(__name__)
# 如果你的名字和我不一樣,記得自己改喔
Procfile 是跟 heroku 指定部署完後,要執行什麼檔案,如果你有其它的規畫,可以改這個檔
python-3.7.11
這個檔案是指定我們要用哪個版本的 python 來執行,如果沒有指定的話,沒有指定的話,就是最新版,因為 shioaji 目前只有支援到 3.7,所以這裡就指定 3.7.11
# 登入
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 指定的指令。結束後,可以看到以下畫面
可以在那找到自己 app 的網址,把這個網址複制下來,貼到 Line Messaging API 裡的 Webhook URL,就可以在 line 裡使用了。