參考文章:Waline 評論系統 - 部署日誌 | CC 的部落格
2023.9.5 更新
許久之前腾訊雲改掉了雲開發 CloudBase 的付費模式,月最低付費到了 19.9,接近我現在維持部落格成本的 20 倍,於是乎自己把服務遷到了阿里雲的函數計算上,目前運行穩定。
2021.8.10 更新
由於 Waline 版本沒有及時升級,表情圖片的 html 代碼被轉義
因此需要修改package.json裡的@waline/cloudbase
中的版本號,目前是 1.0.25
修改之後就可以正常使用啦
前言#
部落格遷到靜態頁面之後,在 Gitalk 和 Discuz 因為網絡原因幾乎沒法用的情況下,尋找一個可植入的第三方評論系統成了我需要去考慮的一件事。經過大量的使用和實驗,搜狐的暢言放在部落格上效果並不是很好,Valine 之前被大量垃圾評論洗刷過,實在不敢用,因此最後鎖定了 Waline,根據介紹這是一個帶有後端的 Valine,所以有一系列可以使用的功能。
關於 Waline 的介紹本文不再贅述,可以查看官方文檔,本文也不涉及 Velcel+Leancloud 這種安裝方法,可以查看上面的參考文章,本文簡略寫一下部署過程,主要寫一些除此之外自己做的步驟,以及一些功能的使用探索。
部署過程#
領取免費資源#
根據參考文章,在這個頁面下滑,就可以看到我們喜聞樂見的 “0 元”,購買後輸入環境名即可。
設置雲函數#
在購買的環境詳情頁中,點擊 “雲函數 - 新建雲函數” 創建所需要的雲函數,運行環境、最大內存等如圖:
在下一步中,函數代碼部分代碼換成下面的:
module.exports.main = async (event, context) => {
context.callbackWaitsForEmptyEventLoop = false;
const entry = (() => {
const result = require('./app.js');
// const app = require('express')();
// result = app.use(result);
return result;
})();
const serverless = require('serverless-http');
let app = entry;
// support for async load app
if (entry && entry.tcbGetApp && typeof entry.tcbGetApp === 'function') {
app = await entry.tcbGetApp();
}
return serverless(app, {
binary: [
'application/javascript',
'application/octet-stream',
'application/xml',
'font/eot',
'font/opentype',
'font/otf',
'image/*',
'video/*',
'audio/*',
'text/comma-separated-values',
'text/css',
'text/javascript',
'text/plain',
'text/text',
'text/xml',
],
})(event, context);
};
隨後將這個倉庫中的app.js
,cloudbaserc.json
和package.json
三個文件原封不動搬過來,完成後點擊 “保存並安裝依賴” 即可,如下圖:
HTTP 訪問#
若要訪問應用,建議綁定自己的域名,並開啟 https,如下圖:
配置完成後如下圖所示:
域名配置結束後,在 “安全配置” 中設置安全域名,如下圖:
環境變量#
與直接一鍵部署到雲開發的按量計費環境不同,手動部署中,設置環境變量在 “雲函數” 中,如下圖所示:
點擊右上角的 “編輯”,添加相應的環境變量與對應的值,在保存之後使用應用便能獲得對應的功能。
配置郵箱提醒#
由於 ZOHO 的 SMTP 服務只有付費用戶可以使用,所以將整個郵箱搬到了腾訊企業郵箱,同樣也設置了一個郵箱賬號用於發信進行郵件提醒。
使用官方文檔所給出的幾個環境變量,如下圖所示:
其中SMTP_USER
和SMTP_PASS
是郵箱的賬號和密碼,配置企業郵箱部分詳情見這篇文章,大同小異,或者按照本身的指引來,也非常簡單。
配置完成後進行測試,成功發信:
總結#
使用 Waline 順利解決了部落格的評論問題,在評論的郵件提醒那裡被折騰了很久,從 SendGrid 換到 SendCloud 再換到腾訊企業郵箱,終於實現了這個功能,從此再也不用擔心自己沒有及時回覆評論了。