Heroku 免費方案退場的轉部署 Railway.app

19 October 2022

沒想到這麼快就再度發生, 上週末的時候, 發現部署 (Deployed) 在 Render 上面的 LINT Bot 開始出現了一點問題。 本來以為是因為使用免費服務, 所以重新開機。 沒想到, 今天整個停機不能運作。

通常, 第一次能夠修復的錯誤, 並不會讓我想整個轉換。 但因為已經經歷幾次的錯誤, 加上今天嘗試了幾個小時都沒有自動恢復正常, 讓我開始搖擺, 研究了幾篇文章後, 開始決定轉換平台。

這次參考了幾篇文章– ⟪老牌託管 Heroku 將停止提供免費方案! 網友私藏 3 替代平台無痛轉移 | YEE式機器龍⟫ 、 ⟪Heroku 的 10 大替代品⟫ 、 ⟪Heroku vs Railway - Which is the best option?⟫ –基本上就是希望在 Railway.app 上面進行部署。

百「試」不得其解

相較於在移轉 Render 的時候, 要轉部署到 Railway.app 相對遇到比較多的瓶頸。

跟之前參考的文章一樣, 遇到了一樣的錯誤訊息:

Application Error Is your app correctly listening on $PORT?

我百思不得其解, 同步的詢問了文章作者, 但還是沒有辦法解決我遇到的情況。 上網搜尋, 發現原來討論 Railway.app 的文章比起 Heroku 跟 Render 真的少很多。 英文的資源如是, 中文想當然爾更加困難。

幾個小時就這樣過去, 經過幾次的部署, 就算已經成功將程式碼部署上去, 但進去網址的時候, 仍會出現同樣的錯誤訊息。

而在設定 LINE Webhook 的時候, 會不斷地看到 503 的錯誤訊息, 意思的就是伺服器並沒有無法被使用, 我想應該跟錯誤訊息讓服務無法啟動有關係。

「暫停」換條路徑

剛好手邊有其他的事情要忙錄, 就把這件事情先擱一邊了! 畢竟花了蠻多時間, 看到明明顯示部署完成, 卻無法使用, 一次次的心情, 雖然還不到受挫, 但被激起想要解決問題的慾望, 著實令人感到情緒波動的難受。

幾個小時的沈澱, 剛好趁著交通的時間突發奇想, 如果真的不行, 那就不如砍掉重練。

晚上空出了一段時間後, 就開始思考如何砍掉重練這件事情。 回憶當初要部署 Render 的時候, 當時很幸運網路有人分享文章, 這樣的幸運並沒有發生在 Railway.app 上。

畢竟 Railway.app 在 2020 年才推出服務, 相對老牌的 Heroku 跟 Render 網路資源的確較為稀少, 而且說句真的連官方的說明文件, 對我來說都有一點點不明究理, 或許他們目標客群都是程式能手, 所以文件相對簡化。

換條路徑我把程式重新一段段打上去, 還是發現並無助益, 一樣面對到相同的情景。 心中突然冒出了一句話「砍掉重練」吧!

砍掉重練「套模板」

寫程式是這樣的, 現在網路發達, 許多高手樂於分享, 所以對於我們來說並不需要白手起家, 網路上有許多模板套用。 而以一個 PaaS 的服務提供商, 猜想應該多少也會提供相對應的模板。

根據我自己的技術需求跟經驗, LINE Bot 使用 Python 架設, 並且透過 Flask 的方式建立 Webhook, 自然打上這兩個關鍵字, 幸運的找到了相對的模板。 Railway.app 直接提供部署的功能, 可以模板直接部署到你的帳號之中, 大概幾分鐘的事情, 基礎架構就已經在我的專案中成形。

既然有了基礎架構, 我就開始慢慢的轉移。 有個小技巧可以分享:

從最簡單的方式開始 「蓋房子」。

既然我原本的架構, 怎麼都無法成行的情況下, 那我從最簡單的部署, 一次次的搬移。 在既有的模板之下, 先套上 LINE 提供的模板, 然後再一步步的比對自己的跟基礎模板的差異—一個區塊、一個區塊的慢慢複製貼上。

Railway.app 是當你有更新的時候, 會自動部署的, 所以每一次的變動, 基本上都會知道是否成功。

最終找到了關鍵點, 就是當使用 handler 這個區塊的時候, 程式就會跳出上面的錯誤訊息。 我其實並不知道為什麼, 但是認真研究了一下, 看起來新版的範本也已經不用 handler 了, 既然如此, 順勢開始修改自己的程式碼。

至此, 在這一個小時之中, 重新部署完成我的 LINE Bot。

Railway.app 收費方式

Railway.app 基本上有提供免費的方案, 我也是今天才剛開始使用, 還不知道免費的資源–USD$5 的額度或者 500 小時的使用時間–是否足夠, 畢竟今天花在測試跟修改的時間, 截至目前已經用掉 12 小時的額度。

但看到他的收費模式, 我覺得也是相對合理的, 每個月會提供 USD$5 的免費額度, 可以升級超過免費額度, 可以升級到 Developer 方案。

按照我的理解, 應該是 $10 的基本費, 如果 8GM RAM 跟 100G 儲存空間超額, 就依照超額的部分增加費用

同時還提供每個人可以推薦分享分潤的機制, 在此分享我的分潤連結 https://railway.app?referralCode=kFdzUK, 當你透過這個連結申請帳號, 我也會獲得 $5 未來如果我要升級 Developer 方案的時候使用。

2023-2-22 更新

對於試用版本的每月 500 小時執行時數上限, 有兩個方法可以突破, 第一種方法是輸入信用卡資料, 仍會保持 $5 的每月免費使用額度, 但就沒有執行時數的限制。 每月使用超額的話會自動扣款。

另外一個方法就是購買一個額度 (Credit), 最低的金額是 $5, 就會自動幫我們升級成為 Developer 方案。 我自己是購買這個項目, 依照自己的微型使用量, 其實免費額度已經非常足夠, 而且也非常好控管, 不會被無限制的扣款。

#Web

  1. Koala Wu (2022-11-22)

您好 我剛學習遇到問題想請教 我註冊後他說我github驗證不通過

我想要運行python 的話請問我選擇哪個模板可用?他列的那些我看不出來哪個可以跑.py 倒是看到有postgreSQL很開心 現在就卡在不懂他python要在哪裡運行 希望大大能指教一下 感激不盡

我之前在申請的時候,還沒有遇到驗證不過,目前也都是透過 Github 去登入 Railway.app。
 
關於 Python 的部分,Railway.app 有提供模板可以讓我們使用,可以參考:https://railway.app/templates?language=python








2006 - © 未來六米, made with ♡ by Blot.im