前言

昨晚,我突然发现本博客的评论功能实际并不起作用。看了下控制台日志,发现反复到us.leancloud.cn的连接报错,高质量节点也无济于事,也不知是配置有问题导致解析到这个怪域名,还是leancloud服务端出问题。搜了下没有有用信息,倒是前些日子leancloud似乎服务器出事,但语焉不详,烦躁之下我决定直接更换评论系统。

先是尝试号称valine升级的waline,但最后到客户端的部分不清楚怎么写,遂放弃。正好中途看到有人提到twikoo,看了下还不错,于是最终选择了twikoo(虽然本站并没有人评论……)。

云函数部署

我采用的是vercel部署。基本一致于官方教程快速上手 | Twikoo 文档。会的直接看官方文档,不会的看视频教程

  1. 注册MongoDB
  2. 创建免费数据库。选择free的shared,云供应商选AWS,区域选择Virginia或者HongKong。其他保持默认即可
  3. (Network Access)ip设置允许所有连接,填0.0.0.0(Vercel部署需求)
  4. (Database Access)创建数据库用户,名称合要求即可。注意密码不能含有特殊字符(仅字母数字),保存。3&4这两步一般会引导你填写,没有的话就到对应选项卡自己设置即可。
  5. 点击Connect,选择Drives(官方教程视频里是MangoDB Drives,一样的)。选择依默认的Node.js,复制下面第二步的字符串,将"<password>“替换为刚才设置的密码,保存供稍后使用。
  6. 注册并登录vercel
  7. 点击该链接 Deploy 将官方模板一键部署到vercel。没什么好说的……选个仓库一直下一步就完事(其实现在大部分产品的引导都做挺好的,不得不让我再次质疑包括本文在内的大部分教程的必要性…哎,写都写了)。等待部署完毕。
  8. 在该项目的dashboard,settings-environment variables,添加环境变量MONGODB_URI,值填写第五步保存的字符串。
  9. Redeploy,完毕后进分配的域名,显示有"Twikoo 云函数运行正常"即可。
  10. 分配的完整域名(可能会有多个,都可以用)即为稍后要填写的envID

前端部署

如果博客模板有适配,跟着模板的教程部署。如果没有,我们就要手动引入。

如果之前没自己改过样式,注意模板已有对应文件的,不要在原文件上改,复制一份到根目录的对应目录再改即可。部署时根目录优先,查找不到才会fallback到模板目录。

  1. .\config.toml

加一行twikoo的环境配置

[params.twikoo]
version = "1.6.16" #与你自己的版本保持一致

其他模板使用的可能是config.yml,那就填写

params:
    twikoo:
      version: 1.6.16
  1. .\layouts\partials\comments.html

评论的代码,跟着官方文档的改就行,这里就直接粘贴了。

<div id="tcomment"></div>
<script src="https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js"></script>
<script>
twikoo.init({
  envId: '您的环境id', // 腾讯云环境填 envId;Vercel 环境填地址(https://xxx.vercel.app)
  el: '#tcomment', // 容器元素
  // region: 'ap-guangzhou', // 环境地域,默认为 ap-shanghai,腾讯云环境填 ap-shanghai 或 ap-guangzhou;Vercel 环境不填
  // path: location.pathname, // 用于区分不同文章的自定义 js 路径,如果您的文章路径不是 location.pathname,需传此参数
  // lang: 'zh-CN', // 用于手动设定评论区语言,支持的语言列表 https://github.com/imaegoo/twikoo/blob/main/src/client/utils/i18n/index.js
})
</script
  1. .\layouts\ _default\single.html

要在页面引入comments.html

<article>
    < !--content start -- >
    ...
    ...
    < !--content end-- >
{{- if (.Param "comments") }}
    {{- partial "comments.html" . }}
  {{- end }}
</article>

当然,很多地方都可以改,这个只是参考文档来的最简配置.

其实主要就是记录下前端部署这部分,其他包括后续配置都看官方文档就行

邮件通知功能(5.19)

配置邮件通知。 我最终采用的是ElasticEmail的服务,twikoo暂未内置该服务的配置,手动填入smtp地址及接口。ElasticEmail没有给出其他信息,那么我们可以默认是无TLS,secure填false(测试也能测出来)。

另外,整域信任后添加smtp用户时,只能添加该[email protected]的二级域名邮箱,子域是不行的,但是子域怎么单独做信任呢?

其实笔者开始尝试的是Mailjet,但是新用户直接被ban,需要人工审核,看到有说人工也没通过的,遂不予采用。

配置完成后,进行邮件通知测试就可以了。由于只是测试,所以博主邮箱是可以收到的。