hexo博客添加Valine评论系统

环境

Hexo框架博客:https://hexo.io/zh-cn/index.html
博客主题:Next主题7.1.1)

简介

之前hexo博客的评论系统为来必力,加载速度及其之慢,导致将post模板中comments都默认为false。

无意中,浏览博客时发现Valine——一款极简的无后端评论系统

pic

安装

获取APP IDAPP KEY

  • 点击登录注册Leancloud;
  • 创建应用
  • 获取APP ID 和APP KEY:刚刚创建的应用>设置>应用KEY

配置

打开hexo源文件,编辑next主题文件——_config.yml,找到Valine,启用并填写相应的APP ID和APP KEY。
pic

配置中avatar选项为默认头像,配置方法:https://github.com/xCss/Valine/wiki/avatar-setting-for-valine

参数 表现形式 备注
空字符串'' Gravatar官方图形 Gravatar官方图形
mm 神秘人(一个灰白头像) 神秘人(一个灰白头像)
identicon 抽象几何图形 抽象几何图形(根据邮箱或昵称生成)
monsterid 小怪物 小怪物
wavatar 用不同面孔和背景组合生成的头像 用不同面孔和背景组合生成的头像(根据邮箱或昵称生成)
retro 八位像素复古头像 八位像素复古头像(根据邮箱或昵称生成)

avatar的值不等于6种参数中的一种,则默认为mm

重新部署即可(需开启评论功能)!

参考:https://ioliu.cn/2017/add-valine-comments-to-your-blog/

Valine 评论系统中的邮件提醒

进入Leancloud>选择你的评论所存放的应用>设置>邮件模板,按下图设置好用于重置密码的邮件主题>然后保存:

pic

1
2
3
4
5
<p>Hi, {{username}}</p>
<p>
你在 {{appname}} 的评论收到了新的回复,请点击查看:
</p>
<p><a href="你的网址首页链接" style="display: inline-block; padding: 10px 20px; border-radius: 4px; background-color: #3090e4; color: #fff; text-decoration: none;">马上查看</a></p>

注意设置首页链接!

然后初始化即可:
在next主题配置文件中设置:

1
2
3
4
5
6
7
8
9
//
var valine = new Valine({
el: '.comment',
notify: true, // 邮件提醒!!!
verify: true, // 验证码
app_id: 'your appid',
app_key: 'your appkey',
placeholder: 'ヾノ≧∀≦)o来啊,快活啊!'
})

将邮件提醒设置为true即可,邮件提醒时需要输入验证码(数学简单计算).

参考:https://github.com/xCss/Valine/wiki/Valine-%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E9%82%AE%E4%BB%B6%E6%8F%90%E9%86%92%E8%AE%BE%E7%BD%AE

使用Valine-Admin拓展

Valine-Admin :一个 Valine 的拓展应用,用来增强 Valine 的邮件通知。
github地址:https://github.com/zhaojun1998/Valine-Admin

使用方法见README:https://github.com/zhaojun1998/Valine-Admin/blob/master/README.md
备注:SMTP服务器选择QQ邮箱,SMTP_PASS即QQ密码,这样测试成功!开始使用Gmail失败。
pic

LeanCloud 休眠策略

免费版的 LeanCloud 容器,是有强制性休眠策略的,不能 24 小时运行:

  • 每天必须休眠 6 个小时
  • 30 分钟内没有外部请求,则休眠。
  • 休眠后如果有新的外部请求实例则马上启动(但激活时发送邮件会失败)。

解决LeanCloud休眠问题

LeanCloud休眠会导致不能发送提醒邮件,因此寻求解决方法。

在vps上添加一个定时任务,每天6点到23点每20分钟访问一次leanapp网址,防止自动休眠。
cron定时任务:

*/20 6-23 * * * curl https://zhyong.leanapp.cn

找到新的方法,查看更新内容。


20190520更新

突然发现博客似乎很久没有手动评论的邮件提醒了。特意评论博客,查看了云引擎下的应用日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ Error: Invalid login: 535 Error: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
STDOUT web1 17:56:34
at SMTPConnection._formatError (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:605:19)
STDOUT web1 17:56:34
at SMTPConnection._actionAUTHComplete (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:1340:34)
STDOUT web1 17:56:34
at SMTPConnection._responseActions.push.str (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:378:26)
STDOUT web1 17:56:34
at SMTPConnection._processResponse (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:764:20)
STDOUT web1 17:56:34
at SMTPConnection._onData (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:570:14)
STDOUT web1 17:56:34
at TLSSocket._socket.on.chunk (/home/leanengine/app/node_modules/nodemailer/lib/smtp-connection/index.js:522:47)
STDOUT web1 17:56:34
at emitOne (events.js:96:13)
STDOUT web1 17:56:34
at TLSSocket.emit (events.js:188:7)
STDOUT web1 17:56:34
at readableAddChunk (_stream_readable.js:176:18)
STDOUT web1 17:56:34
at TLSSocket.Readable.push (_stream_readable.js:134:10)
STDOUT web1 17:56:34
code: 'EAUTH',
STDOUT web1 17:56:34
response: '535 Error: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256',
STDOUT web1 17:56:34
responseCode: 535,
STDOUT web1 17:56:34
command: 'AUTH PLAIN' }

发现是QQ邮箱的Error: Invalid login: 535 Error,搜索发现是因为QQ邮箱升级,没有授权码导致的(之前使用的是QQ邮箱秘密而不需要授权码),因此登录QQ邮箱,生成一个授权码(需要QQ安全中心APP扫描)。

然后将生成好的授权码替代之前的QQ密码即可。

重启实例即可。

通过云函数解决LeanCloud休眠问题

详细查看:Valine Admin 配置手册

注意:此操作是基于以前的内容进行的,确保您已经设置好了一切。

云函数的定时任务是写在代码里的,因此修改代码库为:

1
https://github.com/DesertsP/Valine-Admin.git

切换到部署标签页,分支使用master,点击部署即可。

等待部署完成。

评论管理。访问设置的二级域名https://二级域名.leanapp.cn/sign-up,注册管理员登录信息,如:https://zhyong.leanapp.cn/sign-up 。支持的邮箱:Well-known services

注意:管理账号的注册邮箱必须和环境变量中的SENDER_EMAIL保持一致,否则不能发送邮件

注:使用原版Valine如果遇到注册页面不显示直接跳转至登录页的情况,请手动删除_User表中的管理员账号。

完成后,访问二级域名(如:https://zhyong.leanapp.cn) 的评论管理界面,界面更加好看,功能也增加了不少(如标记垃圾邮件,重发通知)

(重点)通过云函数设置定时任务:

  • 自动唤醒,定时访问Web APP二级域名防止云引擎休眠
  • 每天定时检查24小时内漏发的邮件通知

进入云引擎->定时任务中,创建定时器,创建两个定时任务。

注意设置ADMIN_URL环境变量,添加的环境变量包括:

注意:必须安装此项进行填写,填写必填项和建议项!!!

  1. 选择self-wake云函数,Cron表达式为0 0/30 7-23 * * ?,表示每天早6点到晚23点每隔30分钟访问云引擎

唤醒成功日志:web1 21:00:04 自唤醒任务执行成功,响应状态码为: 200

  1. 选择resend-mails云函数,Cron表达式为0 0 8 * * ?,表示每天早8点检查过去24小时内漏发的通知邮件并补发。

注意:添加定时器后记得点击启动方可生效。

部署完成,完美解决!

坚持原创技术分享,您的支持将鼓励我继续创作!
0%