使用 Serverless Framework 部署個人博客到騰訊雲

serverlesslife.cn 上線背後的故事~
本文來源: ServerlessLife 公衆號
2021年年初,使用 Serverless Framework  在提騰訊雲上部署了一個個人博客:serverlesslife.cn。
整體下來體會到了 Serverless 帶來的一些便利:
  • 不需要管理或運維服務器
  • 按使用付費(有免費額度)
也體驗到了 Serverless Framwwork CLI 的便利性:它大大降低了操作複雜度,用戶體驗完勝控制檯。
 
在整個實踐中,學到了很多新的知識,瞭解了一些背後的邏輯,本文將對它們做一下分享。
 

本次實踐涉及到的騰訊云云服務

  • Serverless Framework
  • COS(對象存儲)
  • API 網關
  • DNSPod 域名註冊、域名備案、域名解析
  • SSL 證書
  • CDN(內容分發網絡)
 

域名購買與備案

2021/01/21 在 DNSPod(2011 年被騰訊收購)購買了域名 serverlesslife.cn 並進行了實名認證。
購買域名後,在中國大陸,要使用域名提供服務,還需要進行域名備案。
2021/1/31 在「騰訊雲網站備案」小程序上提交了備案申請;
經過了兩輪審覈(騰訊雲審覈+管局審覈)後,在 8 天后的 2021/02/07 審覈通過。
 

Serverless Framework 簡介

Serverless Framework 是 serverless.com 推出的一個流行的 Serverless 框架,它可以將 Serverless 函數/應用部署到不同的雲廠商的 Serverless 平臺。在國內騰訊雲與  serverless.com 達成戰略合作,對它進行了很多定製,做了很多組件,使得很容易將 Serverless 函數/應用部署到騰訊雲。
 

使用 Hugo 搭建個人博客

要搭建個人獨立博客,有很多開源的建站工具可以用,比如:WordPress、Hexo、Jekyll、Hugo 等等,不勝枚舉。
因爲之前用過 Hugo,並且比較喜歡它,這裏使用了 Hugo 來搭建個人博客。
Hugo 是由一個 Go 語言實現的靜態網站生成器。簡單、易用、高效、易擴展、快速部署。
Hugo 易擴展指的是它有豐富的主題可以選擇,這是筆者喜歡它的原因之一,每個人都可以選擇自己喜歡的主題。
 
在 Hugo 站點初始化後,在衆多主題中選擇了主題: LoveIt(多麼好聽的名字呀!)。
主題也有很多參數,可以根據自己的需求按需配置。
 
基本框架搭建完成後,如果要編寫博文,只需要添加 Markdown 文件和相關靜態資源文件。
Hugo 支持本地實時預覽,可以一邊寫 markdown 文件,一邊就能通過瀏覽器實時查看效果。
當然部署到生產服務器,需要進行編譯,編譯成站點的任務只要一條 hugo 命令就能完成。
 
站點源碼託管在 GitHub 上: https://github.com/serverlesslife-cn/serverlesslife
同時使用 GitHub Actions 將代碼同步到了 Gitee: https://gitee.com/serverlesslife/serverlesslife
 

部署站點

在站點編譯後,使用 Serverless Framework CLI 便可將它部署到騰訊雲。
Serverless Framework CLI 需要一個配置文件 serverless.yml,此時配置文件內容如下:
component: website # (必填) 引用 component 的名稱,當前用到的是 tencent-website 組件
name: serverlesslife-2021 # (必填) 該 website 組件創建的實例名稱
app: serverlesslife-2021 # (可選) 該 website 應用名稱
stage: prod # (可選) 用於區分環境信息,默認值是 dev

inputs:
  src:
    src: ./public
    index: index.html
  region: ap-guangzhou
  bucketName: serverlesslife-2021
  protocol: https

 

其中 public 目錄是 hugo 編譯之後站點文件所在目錄。
使用 serverless deploy 命令進行部署操作,如果沒有在本地的 .env 配置 secretid 和 secretkey,需要使用微信進行掃描登錄。
部署過程中,會在 COS 創建一個 bucket 並將 public 目錄下的文件上傳到這個 bucket 中,然後會生成一個騰訊雲四級域名的訪問地址。其中該 bucket 前綴是 serverlesslife-2021,工具會自動加上騰訊雲賬號的 APPID 作爲後綴。
 
Serverless Framework 控制檯下,會有一個應用名稱爲 serverlesslife-2021 的應用,這個應用會有一個騰訊雲四級域名的訪問地址,如下所示:
 
在 COS 對象存儲的存儲桶列表頁,可以看到有一個名稱爲 serverlesslife-2021-1259061164  的 bucket,如下所示:
 

自定義域名 + SSL 證書 + 自動刷新 CDN

配置「自定義域名 + SSL 證書 + 自動刷新 CDN」還需要在 serverless.yml 中增加一些配置信息,整個 serverless.yml 文件如下:
component: website # (必填) 引用 component 的名稱,當前用到的是 tencent-website 組件
name: serverlesslife-2021 # (必填) 該 website 組件創建的實例名稱
app: serverlesslife-2021 # (可選) 該 website 應用名稱
stage: prod # (可選) 用於區分環境信息,默認值是 dev


inputs:
  src:
    src: ./public
    index: index.html
  region: ap-guangzhou
  bucketName: serverlesslife-2021
  protocol: https
  hosts:
    - host: serverlesslife.cn
      autoRefresh: true #開啓自動 CDN 刷新,用於快速更新和同步加速域名中展示的站點內容
      onlyRefresh: false #建議首次部署後,將此參數配置爲 true,即忽略其他 CDN 配置,只進行刷新操作
      https:
        switch: on
        http2: on
        certInfo:
          certId: 'kBM9GLPt'

 

上面的配置文件支持配置多個域名,每個域名下面還可以配置其他信息,如 SSL 證書 ID、自動刷新 CDN 等。
使用自定義域名時,如果需要配置 SSL 證書,那麼就必須使用 CDN,因爲在 CDN 下可以配置證書。
 
SSL 證書需要事先在 SSL 證書控制檯申請,這裏申請了一個免費證書,證書有效期一年,申請成功後會有一個 ID:kBM9GLPt,如下所示:
 
在配置好域名相關信息後,Serverless Framework 在部署後做了大量的事情,大大簡化了配置成本。
如果不用 Serverless Framework 的話,那麼就需要在不用雲服務的控制檯多個地方來回進行配置。
 
下面看下在配置「自定義域名 + SSL 證書 」背後,Serverless Framework 都做了哪些事情:
1、CDN 控制檯下,證書管理—>配置證書,將域名和證書關聯到了一起,如下所示:
2、CDN 控制檯下,域名管理—>添加域名,新增了一條記錄,爲 serverlesslife.cn 開啓了靜態加速,將 COS 靜態網站作爲源站點,並會生成 CNAME:
3、COS 控制檯下,點進 serverlesslife-2021-1259061164 存儲桶,在域名傳輸與管理—>自定義 CDN 加速域名處,也會看到有一條記錄:
 
此時,要正常訪問域名,還需要手動配置下域名解析:打開 DNSPod 控制檯,爲 serverlesslife.cn 添加一條 CNAME 記錄,記錄值爲 CDN 生成的 CNAME:serverlesslife.cn.cdn.dnsv1.com。
 
注意:在首次部署後,將 onlyRefresh  參數配置爲 true,即忽略其他 CDN 配置,只進行刷新操作,否則部署時間會相對比較長。
 

參考

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章