功能終於做的差不多了,是時候接受大家的考驗了,感謝大家列了洋洋灑灑一長串待修正內容,開始進入無情的修正機器模式。
功能都差不多開發與修正的差不多了,要來考慮一下部署,由於要同時處理伺服器存放與資料庫建置,想說之前都是用一鍵部署的雲端平台服務,一方面想要省錢,一方面也想藉此熟悉Linux系統操作,最後選了租借虛擬主機來做。
前端部分,前人就已經完成了,不太需要去煩惱,也不宜去動,只會為自己增加風險與煩惱,於是專心思考後端與資料庫要怎麼處理。
前端部署
前端的部署使用Cloudflare Pages,搭配github action做CICD。
網域也是在Cloudflare購買與設定DNS。
後端部署
原本測試都是用有用過render\vercel,mongodb是用mongodb atlas,由於對於之後流量的不確定性,想說還是盡可能不要太花錢,深怕漏看這些平台的計價資訊,一不小心帳單就爆表。
最後選了租虛擬主機,用來起後端伺服器與資料庫。
容器化
使用Docker-compose
CICD設定
準備repo與workflow
虛擬主機
到linode註冊,開一個最便宜的方案
設定ssh登入
域名轉址設定
在Cloudflare設定DNS
需分正式與測試環境子網域
ssh permision denied
最後是用了不同的action 來解決
linode會擋寄信服務
參考網路上的教學解決:Linode伺服器無法寄送信件
google 登入不能接受子域名後面加上/xxx
DNS設定兩個不同子域名
Nginx設定根據域名導向不同環境的主機服務
上線後發現手機版RWD有問題
會發生除了前端沒注意到之外,大家在測試也很少用手機版畫面去測,都開著筆電瀏覽器,發現的時候已是半夜一點,於是乎,許久未開發前端的我,再次發起前端挑戰,搞了一個多小時才緊急修了一個堪用版本,再請前端大大之後抽空協助補正。
資料庫資料消失
修完後已是昏昏沈沈,再補了幾筆資料,不至於讓頁面空空的之後,終於可以來睡了。
沒想到隔天早上醒來一看,資料都消失了,但查了mongodb服務沒有重啟,也有掛volume,log沒有報錯,到底是為什麼?
不過在db有看到底下的資訊
把遇到的情況丟google,竟然找到類似的狀況,原來我被勒索了...
原來是被掃到虛擬主機IP位置,資料庫被綁架,而且只綁架prod的資料庫,dev的還好好的,真是會挑?
最後發現是因為我在docker-compose yaml 設定公開對外的port,所以可以連到資料庫,關掉就解決了。
這過程蠻有收穫的,部署前的挑戰與問題,到上線前端大大協助合併一整年的commit&解衝突,上線後的荒唐事,都覺得很有意思。
有關Side Project Taiwan的簡介
Side Project Taiwan 的宗旨是藉由Side Project開發來成就自我,透過持續學習和合作,共同推動技術和專業的發展。我們相信每一個參與者,無論是什麼專業,都能在這個社群中找到屬於自己的成長空間。
歡迎所有對Side Project開發有興趣的人加入我們,可以是有點子來找夥伴,也可以是來尋找有興趣的Side >Project加入,邀請大家一同打造一個充滿活力且有意義的技術社群!
Discord頻道連結:https://sideproj.tw/dc