【Host】利用Render搭配Dockerfile部署Laravel專案吧!(類似Heroku的服務商推薦!)



【Why】

你的Side Project只有在本地測試?太low了吧,這樣要怎麼展示自己酷酷的作品

如果使用第三方API的Call Back(如 Line Login or Webhook、第三方金流) 該怎麼辦?

要有部署主機、主機要安裝環境、ssl、DNS、url 都要時間、金錢

【How】

Render的運作流程:

  1. 準備好你的專案 也可以直接fork render提供的laravel範例
  2. 建立資料庫
  3. 在render連動github
  4. 製作Dockerfile (不懂Docker? Render提供多種Docker的Deploy Example) 這邊筆者Ryan會小小講解一下下 至於Docker的介紹 我們會下次會專門寫一篇XD
  5. 設定參數..等等

【What】

Render 是一間雲平台即服務的品牌,相信有接觸網頁開發的觀眾應該都聽過Heroku,

甚麼?沒有嗎?

像是GCP、AWS這類的雲端服務提供商就不可能沒聽過了吧

筆者Ryan在工作時有接觸GCP、AWS,自己之前有用過Heroku架設個人網站

這次偶然碰到這間,試了一下從開始到部署完一個GO的網站,大概十分鐘左右

甚至都不需要打到一行Code、下到一行Command

【優點】

  1. 輕鬆達到CI/CD
  2. 不需要繁瑣的部署環境
  3. 免費:D

【缺點】

  1. 免費方案的限制,如同Heroku,免費的部署若一段時間會自動休眠,等同於過一段時間後開啟網頁會需要一段時間,詳情,而且和Heroku相比,Render的休眠常常會5XX(Server Error)

  2. 若和Heroku相比,Heroku應該不需要用到Docker(太久以前用的,不太記得了),入門門檻相對高一些。
  3. 收費方式比較複雜,筆者Ryan目前還使用免費方案,目前還不太清楚它的分服務(主機、資料庫)收費,還是一次性月費,個人覺得前者機率比較大






  4. 使用PostgreSQL需要注意,免費方案一段時間會刪除資料
  5. 相對於GCP、AWS,所提供的服務就沒有那麼多樣化,如:開設一台虛擬機,在上面裝你想裝的任何軟體,可以把所有服務通通開在一台。這個問題會回到,你的專案的部署方式,是否需要分不同主機、是否需要快速建成(這其實是關係到Docker,跟服務商無關)

【示範】

登入後進入Render後台,點選右上角的New並點選Web Service


這是 Render官方釋出的Laravel範例,進入後點選右上角的Fork

Fork出來後會像這樣,注意左上角

接下來就是重頭戲,回到剛剛的Render後台,依以下步驟:


登入Github




並點選Save,就會自動跳回到Render後台,可以看到有個新的專案,選它

輸入Name後,其他基本不變,這邊拉到下面



需要新增APP_KEY,產生方式:到你的laravel專案底下輸入
php artisan key:generate --show


把產生的KEY貼上

再來就按下建立,就等自動部署完成啦










【小提示】

這邊放一些我自己遇到坑XD
  1. 還記得一開始說到的接第三方API嗎? 記得Laravel要記得改VerifyCsrfToken.php,這個會擋CSRF,如下圖(下圖是全開,記得在正式環境不要這麼設定,安全性問題)


  2. 我根據我自己的專案有在做一些調整(引用Jetstream 安裝npm..)
    可以參考這個commit





留言

其他人都在看...

【Host】十分鐘內五個步驟,將你的React免費部署在Render上吧(附範例)

【Laravel】部屬Laravel前的筆記-總匯篇:伺服器、資料庫、優化、注意事項(未完待更新)