首頁>技術>

現在用Hexo來搭建靜態站點的人越來越多了,很多人會選擇試用Github Pages服務來部署自己的靜態站,但Github Pages國內訪問速度實在無法接受,本文介紹一下如何一鍵使用阿里雲OSS物件儲存服務部署Hexo站點,同時解決一個瀏覽器快取的坑。

加速方案Netlify:與Github配合使用很方便,但國內訪問速度不佳,需要搭配國內CDN使用Vercel:與Netlify類似,國內訪問速度不錯,域名沒有備案的話是個不錯的選擇物件儲存:使用阿里雲OSS或類似的物件儲存服務,國內訪問速度不錯,也可搭配國內CDN使用,速度最好,但要求你的域名有備案號境內物件儲存+境外Vercel/Netlify:我所採用的方案,應該是最佳的方案了建立Bucket

首先要做的事情就是去阿里雲(https://aliyun.com)建立一個Bucket:

Bucket名稱:隨便起,只要不重複就行地域:按你的需求,阿里雲的節點國內訪問速度都可以,如果你不打算使用CDN服務的話,可以選擇華東節點,全國訪問速度都能兼顧。如果使用CDN服務的話,那就沒區別了,選哪都行。儲存型別:一般選擇標準儲存就可以了,當然如果訪問量很小的話,選擇低頻訪問儲存也可以,可以省一點錢。同城冗餘儲存:不需要版本控制:不需要讀寫許可權:這裡要注意,我們選擇公共讀,切記不能選擇私有,一方面如果不開啟CDN的話,私有許可權無法在公網訪問。另一方面,如果開啟CDN,阿里雲的CDN私有回源功能與OSS的靜態頁面功能衝突(別問我是怎麼知道的,都是坑)服務端加密方式:無實時日誌查詢:看需求,有免費7天的實時日誌查詢,但有900GB/天的限制定時備份:不開通開啟靜態頁面功能

進入Bucket的配置頁面,選擇“基礎設定-靜態頁面”:

按照圖中的內容進行配置:

預設首頁:index.html預設404頁:404.html(按照你實際的404頁面地址填寫)子目錄首頁:開通,這裡由於Hexo的分類、標籤等頁面,都是子目錄的形式(例如:/tags/),如果不開通這個功能,不會自動定位到對應目錄的index.html檔案404規則:Index建立AccessKey並授權

其實現在就可以在阿里雲的管理頁面上傳檔案部署網站了,但實在是太麻煩,我們希望的是一個自動化的方案。這裡我們需要建立一個API的授權AccessKey:

阿里雲現在開啟了子賬戶授權的功能,因此我們可以選擇跳轉到子賬戶管理的頁面:

首先建立一個子賬戶:

這裡注意,由於我們這個賬戶是給API使用的,所以必須開啟程式設計訪問許可權:

這裡搜尋“OSS”,選擇新增AliyunOSSFullAccess許可權:

安裝一鍵部署指令碼

我編寫了一個可以一鍵部署Hexo到阿里雲OSS的hexo外掛,並支援配置瀏覽器快取HTTP響應頭。原始碼地址:https://github.com/huzhanfei/hexo-deployer-ali-oss-extend

使用很簡單,在hexo專案下執行安裝命令:

npm i hexo-deployer-ali-oss-extend

在hexo專案配置檔案_config.yml中新增如下配置:

deploy:- type: ali-oss  region: "<您的oss 區域程式碼>"  accessKeyId: "<您的oss  accessKeyId>"  accessKeySecret: "<您的oss accessKeySecret>"  bucket: "<您的bucket name>"  cacheControl:    images: "<圖片檔案HTTP響應頭Cache-Control>,留空為no-cache"    css: "<CSS檔案HTTP響應頭Cache-Control>,留空為no-cache"    js: "<JS檔案HTTP響應頭Cache-Control>,留空為no-cache"    html: "<HTML檔案HTTP響應頭Cache-Control>,留空為no-cache"    other: "<其它檔案HTTP響應頭Cache-Control>,留空為no-cache"

其中區域程式碼,可以在OSS的Bucket概覽當中找到,如下圖所示:

另外,這裡增加Cache-Control功能,是由於OSS物件儲存並沒有針對常見的網頁檔案(如css、js、圖片等)進行預設HTTP響應頭的設定,這些不常更新的檔案不快取,會導致流量大量浪費,後面如果使用CDN的時候,CDN獲取不到快取配置也會進行不斷的回源,產生回源流量浪費。

配置就這麼簡單,然後執行部署命令:

hexo d

即可將專案部署到OSS中,預設情況下將檔案上傳到bucket的根目錄下,如果需要部署到其他目錄,請在deploy下新增remotePath選項進行指定

    remotePath: "<您要部署的目錄>"

當然,如果你使用了GitHub的Actions功能,可以配置自動執行hexo d,提交原始碼的時候自動執行部署指令碼,簡直不要太方便,具體配置方式不是本文討論的重點內容,可自行研究。

配置自定義域名

其實做到這一步,就已經可以訪問你的網站了,可以在Bucket概覽頁面找到你的訪問域名,當然我們大機率需要使用自己的域名訪問,如果你的域名已經進行了備案,可以新增自定義域名。

可以在“傳輸管理-域名管理”中配置域名:

如果你的域名不在阿里雲解析的話,請根據頁面提示手動設定域名解析。

後話

到此,就可以透過你的域名訪問站點了,你也可以上傳SSL證書以開啟HTTPS訪問。當然,如果你有更高的要求,也可以選擇更多的最佳化:

開啟CDN服務:開啟CDN服務後,相當於在全國多地部署你了的映象站,以獲取更快的訪問速度,同時可以透過CDN服務開啟圖片壓縮、頁面最佳化等等功能分割槽域解析:設定DNS解析將國內解析到阿里雲OSS或CDN,國外解析到Netlify、Vercel甚至直接解析到GitHub Pages服務

自建部落格地址:https://bytelife.net,歡迎訪問! 本文為部落格自動同步文章,為了更好的閱讀體驗,建議您移步至我的部落格

5
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • JAVA多執行緒程式設計-1JMM記憶體模型