Hexo-matery-valine评论系统
1. 前言
博客系统众多,WordPress,Emlog,Typecho等等,都有自带的评论系统,而静态博客系统如Hexo,Jekyll,Hugo等,都没有自带的评论系统,想要添加评论系统便便需要依赖第三方。
Hexo-matery主题的作者在主题配置文件_config.yml
中已经添加了Gittalk、Gitment、Disqus、Livere、Valine、Waline这些评论系统,只需要添加配置函数便可以使用,
我之前用的是Gittalk评论系统,一个基于Github issue和preact开发的评论插件。但是这个系统想要评论只能登录,而且只支持Gihub登录,还有一个我遇到的问题就是在使用过程中你的博客若是托管在Github pages上的,没有自定义域名Gittalk还能登录上,但是只要添加域名,GIttalk系统就会卡在循环登录的页面。所以后来换了Valine评论系统。
2. Hexo-matery-Valine配置
Valine 诞生于2017年8月7日,是一款基于LeanCloud的快速、简洁且高效的无后端评论系统。
理论上支持但不限于静态博客,目前已有Hexo、Jekyll、Typecho、Hugo、Ghost、Docsify 等博客和文档程序在使用Valine。Valine官网上有配置教程,但已经是很多年前的了不是很详细。便在写了一遍。
2.1 获取APP ID和APP Key
首先需要进入leandCloud官网进行注册,首选国际版,选国内的需要实名认证,点左上角创建应用,添加应用名称、选择开发版本点击创建。
2.2 绑定API访问域名
之所以绑定API访问域名需要在后面的配置文件中使用到,进入刚才创建的应用,点左下角「设置—域名绑定」,最上面便是API访问域名,点击绑定域名,自己想一个自己域名下的二级域名填进去就行,点绑定它就会给你显示DNS该如何配置的,这是便进入域名的管理处,我的是Cloudflare,找到DNS解析,填入配置,类型选择CNAME,名称是自己想的二级域名,目标是Leancloud给的跳转域名。填好后保存等3分钟就绑定成功了。
2.3 配置_config.yml文件
回到Lancloud创建的应用中,点左下角「设置—应用凭证」,就会看到需要的APP ID
和APP key
。找到主题目录下的_config.yml
文件。打开后将APP ID
和APP key
以及绑定的API访问域名填在如下内容中:
valine:
enable: true
appId: # 必填
appKey: # 必填
serverURLs: # 必填 https://你的api
如果enabl
值是false
改成true
才表示启用Valine。到这里算是基本完成,重新生成下博客文件就能看到Valine评论区了。
3. Valine评论系统优化
到这里有的人会想Valine评论系统无后端,没有办法自行检查和过滤评论,万一有些人在评论区注入一些违法内容,对你的博客有一定的影响。这里推荐一个项目可以解决这些烦恼。
Valine Admin 是 Valine 评论系统的扩展和增强,主要实现评论邮件通知、评论管理、垃圾评论过滤等功能。支持完全自定义的邮件通知模板。基于Akismet API实现准确的垃圾评论过滤。此外,使用云函数等技术解决了免费版云引擎休眠问题,支持云引擎自动唤醒,漏发邮件自动补发。兼容云淡风轻及Deserts维护的多版本Valine。
3.1 云引擎一键部署
进入评论系统数据库所在的LeanCloud应用。点击左边导航栏中的「云引擎—管理部署」。点击创建分组,填入分组名称、选择Web后端、实例规格免费版。
进入分组后,部署模式选择Git部署
,分支master
,部署目标环境为生产环境
,部署Git地址填:https://github.com/DesertsP/Valine-Admin.git
,即可一键部署。
部署完成后点击设置开始添加环境变量。
变量 | 示例 | 说明 |
---|---|---|
SITE_NAME | Moonのblog | [必填]博客名称 |
SITE_URL | https://blog.cmymoon.com | [必填]首页地址 |
SMTP_SERVICE | [新版支持]邮件服务提供商,支持 QQ、163、126、Gmail 以及 更多 | |
SMTP_USER | xxxxxxx@qq.com | [必填]SMTP登录用户 |
SMTP_PASS | ccxxxxxxxxch | [必填]SMTP登录密码(QQ邮箱需要获取独立密码) |
SENDER_NAME | Moon | [必填]发件人 |
SENDER_EMAIL | xxxxxx@qq.com | [必填]发件邮箱 |
ADMIN_URL | https://xxx.cmymoon.com/ | [建议]Web主机二级域名(云引擎域名),用于自动唤醒 |
BLOGGER_EMAIL | xxxxxxx@qq.com | [可选]博主通知收件地址,默认使用SENDER_EMAIL |
AKISMET_KEY | xxxxxxxx | [可选]Akismet Key 用于垃圾评论检测,设为MANUAL_REVIEW开启人工审核,留空不使用反垃圾 |
强调一下ADMIN_URL这个变量中的值是域名绑定中的下面「云引擎、ClientEngine 域名」处在绑定一个二级域名。操作和上面绑定API域名一样,我的建议是还是在绑定一个比较好,主要是用于云引擎自动唤醒。
3.2 评论管理
首先需要设置管理员信息。访问管理员注册页面https://云引擎域名/sign-up
,注册管理员登录信息,
这里的的云引擎域名就是绑定的云引擎二级域名。
3.3 定时任务设置
关于自动休眠的官方说法:点击查看。目前实现了两种云函数定时任务来解决云引擎休眠的问题:
- 自动唤醒,定时访问Web APP二级域名防止云引擎休眠;
- 每天定时检查过去24小时内漏发的邮件通知。
进入「云引擎-管理部署-定时任务」,创建两个定时任务。
选择self-wake云函数,Cron表达式为
0 */30 0-16 * * ?
,表示每天早0点到晚16点每隔30分钟访问云引擎。选择resend-mails云函数,Cron表达式为
0 0 0 * * ?
,表示每天0点检查过去24小时内漏发的通知邮件并补发。
至此,Valine Admin 已经可以正常工作,如果你想添加邮箱通知模板到Valine-Admine项目下查看即可。