Golang線上工具遷入Vercel

瀟灑哥老苗發表於2022-02-27

原文連結,作者 “瀟灑哥老苗”。

不知道還有朋友在使用 printlove.cn/tools/ 這幾個工具沒,因為訪問人數不多,我就給將網站停用了,真實原因是還要花錢續伺服器,所以就…

在停用的幾天,有 1 個朋友說挺好用的,但網站停了。為了不讓這位朋友寒心,網站就重新啟用了。

這次不再購買伺服器,選擇了 Vercel 平臺管理我的網站,原因如下:

  • 支撐 hugo 工具

  • 支援部署 Go 程式碼

  • 免費

如果你對免費部署一個網站感興趣,可以看看我的這篇 Vercel + Notion 建個人部落格

printlove.cn 網站內容是透過 Hugo 工具生成的,所以先解決此問題。

步驟如下:

  1. 使用 Github 登入 Vercel 平臺。

  2. 匯入 printlove 倉庫,如果是原生程式碼部署,待會會講。

  3. 配置部署

Golang線上工具遷入Vercel

如果在開始部署時,出現了報錯,那就需要指定 hugo 的版本。我的專案是遇到了,原因是 vercel 預設的版本存在 Bug。

透過設定環境變數指定版本:

Golang線上工具遷入Vercel

完成了靜態網頁的部署,下來就要搞 API 介面程式碼。

其中除了 json 轉 Go Struct 工具外,其它的工具都是使用 Go 程式碼實現,開始整。

  1. 在專案根目錄下建立 api 目錄。

  2. 在目錄下建立 tool.go 檔案,這個檔名稱隨意,內容如下:

package api

import (
    "net/http"
)

func Tool(w http.ResponseWriter, r *http.Request)  {
    // todo
}

vercel 平臺會將後面的請求傳遞給該 Tool 函式,這個函式名也隨意,但函式引數必須按照該規則。

  1. 在專案根目錄建立 vercel.json 配置檔案,負責路由,內容如下:
{
  "routes": [
    {
      "src": "/api/tool",
      "dest": "/api/tool.go"
    }
  ]
}
  • src:介面地址

  • dest:將請求轉交給 tool.go 檔案處理。

  • 重新部署即可。

注意坑

第一次我在部署 Go 程式碼時,在 api 目錄下建立了好多個 Go 檔案,每一個檔案負責一個介面處理,但在部署時,出現失敗。

原因:多個檔案編譯時佔用的記憶體太大,超過了 vercel 提供的免費記憶體大小(1024M)。因此,我將所有的介面處理都整合在了 tool.go 檔案內,詳細的請看原始碼

有時候我們想測試本地的程式碼在 Vercel 平臺的部署結果,那提交到 Github 就有問題:“麻煩和不合理”。

下來使用命令進行部署。

1. 安裝

npm i -g vercel

2. 登入 vercel

vc login

vc 是 vercel 的縮寫命令。

3. 開始部署

下來在專案根目錄執行 vc 命令,執行後 vercel 網站就會出現本地專案部署的介面。

Golang線上工具遷入Vercel

如圖 printlove-test 就是我原生程式碼的測試專案。

這篇文章我沒有過多深究 vercel 的太多細節,只是把我使用到的,覺得夠用的東西拿出來分享給大家。

遷移成果:

本作品採用《CC 協議》,轉載必須註明作者和本文連結
瀟灑哥老苗

相關文章