Valine Admin是Valine评论系统的扩展和增强,主要实现评论邮件通知,评论管理,垃圾评论过滤等功能。支持完全自定义的邮件通知模板。基于Akismet API实现准确的垃圾评论过滤。

本篇文章讲解的内容实现了Valine评论邮件通知,评论管理,垃圾评论过滤等功能,并解决了”因流控原因,通过定时任务唤醒体验版实例失败,建议升级至标准版云引擎实例避免休眠”这个问题。


当时刚建站的时候就选择了Valine作为评论系统,虽然说文章不多,评论也没几个,但是有些朋友给我评论我总是错过,看到的时候已经过去很久了,我回复了他们也不知道。

所以,我就在想能不能让Valine评论有邮件提醒的功能,这样能够让博主和访客都及时收到提醒。于是我就上网去搜,然后发现了Valine-Admin这个项目。

下面我们就来讲讲如何实现这个功能

部署 Valine-Admin

登录 LeanCloud 的官网

登录无论是国内版还是国际版都是可以的。

当然,首先你得有一个LeanCloud帐号,不过既然你已经使用Valine评论,那你肯定已经有一个账号了。

这里需要注意一点,由于之后需要绑定云引擎域名,所以如果你登陆的是国内版,那么你的域名需要备案,否则是无法使用的。没有备案域名的话就选择国际版吧,之前已经有评论的就导出之后再导入到国际版。

进入应用

没有的先创建应用

部署项目

依次点击左侧的云引擎 -> 部署 -> 项目部署 ->Git 部署 -> 配置 Git。然后 Git 的地址填写:https : //github.com/DesertsP/Valine-Admin.git。 然后再次点击 Git 部署 -> 部署即可

绑定评论管理的域名

国内版

LeanCloud不给予免费的二级域名了,因此必须绑定备案域名

在设定 ->域名绑定 ->云引擎域名

国际版

LeanCloud 给予一个免费的二级域名,也可以绑定自己的域名。

在云引擎 ->设置 ->Web主机域名

设置域名白名单

已经部署好Valine的应该已经设置过了,第一次用的去安全中心设置Web安全域名

配置环境变量

变量 示例 说明
SITE_NAME 无岸海 [必填]博客名称
SITE_URL https://noshore.cn [必填]首页地址
SMTP_SERVICE QQ [新版支持]邮件服务提供商,支持QQ,163、126,Gmail以及更多
SMTP_USER xxxxxx@qq.com [必填] SMTP登录用户
SMTP_PASS ccxxxxxxxxch [必填] SMTP登录密码(QQ邮箱需要获取独立密码)
SENDER_NAME 无岸海 [必填]发件人
SENDER_EMAIL xxxxxx@qq.com [必填]发件邮箱
ADMIN_URL https://xxx.leanapp.cn/ [建议] Web主机二级域名,用于自动唤醒
BLOGGER_EMAIL xxxxx@gmail.com [任选]博主通知收件地址,默认使用SENDER_EMAIL
AKISMET_KEY xxxxxxxxxxxx [可选]Akismet Key 用于垃圾评论检测,设为MANUAL_REVIEW开启人工审核,留空不使用反垃圾

添加完成后重启云引擎

QQ邮箱SMTP登陆密码在设置 ->账户 ->SMTP服务 ->生成授权码

初始化后台管理

访问域名https://×××.cn/sign-up

第一次进入会要求创建账户,注册管理员登录信息。

登陆界面长这样

如果直接是登录界面请先删除_User表中的所有数据!!!

以后就可以通过你的域名管理你自己的评论了

邮件提醒的坑
如果要使用邮件通知,不需要在你的网站配置中把Notify这一项设定为true,否则只会按照设置中重置密码的模板发送而不会使用在变量中设置的模板,并且云引擎也不会发送邮件;顺带可以把verify调整为false来避免出现Valine的反人类评论验证


重点来了!!!

LeanCloud有休眠策略,详情请看休眠策略

如果应用最近一段时间(半小时)没有任何外部请求,则休眠。
休眠后如果有新的外部请求实例则马上启动。访问者的体验是第一个请求响应时间是5~30 秒(视实例启动时间而定),后续访问响应速度恢复正常。
强制休眠:如果最近 24 小时内累计运行超过18小时,则强制休眠。此时新的请求会收到 503 的错误响应码,该错误可在 云引擎 > 统计 中查看。

关于服务器休眠唤醒的问题,以前的方法是通过自带的定时任务进行唤醒,但现在不可以了,因为官方进行限制了。因此,这边是用了一个新方法GitHub Actions

添加TOKEN

点击右上角的头像,选择settings

点击Developer settings

选择Personal access tokens,添加一个新的TOKEN

这个TOKEN主要使用来启动actions和上传结果用的。

设置名字为GITHUB_TOKEN, 然后勾选repo,admin:repo_hook,workflow等选项,最后点击Generate token即可。

名字请务必使用GITHUB_TOKEN

FORK项目

地址:https://github.com/blogimg/WakeLeanCloud

添加后台地址

成功FORK后,进入项目的设置。添加你的后台地址(也就是评论管理的后台地址)

选择Secrets,添加你的地址

其中Name的名字必须为SITEValue可以是多个地址,用英文逗号分隔。不要中文逗号,不要用中文逗号,不要用中文逗号!重要的事说三遍!

手动测试

点个star就能启动了,启动后请切换到actions,看看是否运行成功。

默认是每天8:00-24:00 时每 20 分钟运行一次。(GitHub 时间稍有延迟,大概时 2-5 分钟。)

如果进入显示如下界面,点击I understand即可

自己点自己的项目是手动执行一次actions。是为了测试才设计这个功能的哦!

并不是不点星这个actions就不会运行。

邮件重发

由于Leancloud有强制休眠策略(如果最近 24 小时内累计运行超过 18 小时,则强制休眠),所以在上面的自动唤醒中设置的是每天8:00-24:00 时,其他时间实例处于休眠状态,邮件不会发送,这时候需要邮件重发功能。

依次点击云引擎 -> 定时任务 -> 创建任务

选择resend-mails云函数,Cron 表达式为0 20 8 * * *,表示每天早上8 点 20 分检查过去 24 小时内漏发的通知邮件并补发(请尽量确保你设置的时间机器是醒着的)。

国际版稍有不同,Cron表达式为0 20 24 * * ?,表示每天早上8点20检查过去24小时内漏发的通知邮件并补发,填入之后下面会有提示,根据自己情况自行调整。


至此,教程全部结束,有问题可在下方留言。