终于成功在博客上部署了一个自己的评论系统。

为什么要自己搭建

其实一开始也是在寻找第三方的评论系统来着,但是一边找一边就觉得,我自己搭的服务器做的网站,为什么评论系统还要假手于人呢,再说别人的评论系统可不可靠,会不会要关闭啥的……

然后我就看到去年多说关闭的消息。

……嗯还是自己来吧。

于是就找到了一个叫做ISSO的开源评论系统。

如何搭建

翻了一圈教程,大致上也就那么回事了,这里给两个链接介绍一下搭建:

  • 官方的教程,英文的。这里我贴的是Install from source的安装方法,也就是通过github上最新的源码来安装,因为PyPi上面的那个是旧版本,一些新功能如Gravatar头像支持是没有的。
  • 一个中文教程,应该算比较全了。

因为不是本文重点,所以基本的搭建就自己看吧。不过有两点要注意:

  • 安装的时候请使用python3来安装,即所有用到python的地方都改成python3,用到pip的地方也改用pip3来代替。否则后面的微信评论部分要改的代码可能会无法工作。
  • 克隆ISSO代码的时候可以直接用我的repo,这样后面微信部分就不用改代码了,地址如下:
git clone https://github.com/regomne/isso.git

搭建好之后就得考虑一件事情。

互联网上嘛,什么鸟都有,不能任由所有人都随便发评论。另外我这么一个私人博客,还是在局子里备了案的博客,因为一些众所周知的原因,就更不能让人随便发言了,总要有个审核机制。

ISSO自带审核功能,是通过邮件的方式,每当有人发评论,就给你发一封邮件,里面带着一个接受/拒绝的链接。很不方便。

微信评论审核

本文参考了这篇文章中的部分内容,不过该作者写的部分代码在我这里无法工作,于是研究之后整理了我这篇文章。

配置Server酱

Server酱是一套通信工具,允许你通过一条简单的http请求,给你的微信发出通知。

直接打开它的官方网站,可以进去之后看教程;

或者按我这里的来:先点击登入网站(用github授权登录),然后绑定微信推送,最后在测试页面向自己的微信发消息测试。

到这里,我们就可以进行最简单的评论消息通知了,思路大致就是修改ISSO的代码,把发送邮件的地方改为访问刚刚看到的那个http请求。

但是我们的目的是审核,就是接收到通知之后,还要有个简单的方式接受或者删除这条评论。这就需要Server酱提供的另一个接口了:

配置TalkAdmin

还是在刚刚的网站上,登入之后进入这里,点击添加命令,然后:

  • 命令名称 随便。
  • 命令正则 空。
  • 选择下行命令
  • WebHook地址 空。
  • 交互界面模板 如下填写(照抄的刚刚那篇文章里的):
<a href="{{$TA_url_a}}" class="btn btn-primary font-white">通过 </a> &nbsp; | &nbsp; <a href="{{$TA_url_r}}" class="btn btn-danger font-white">拒绝</a> &nbsp; | &nbsp; <a href="{{$TA_url_c}}" class="btn btn-info font-white">查看</a>
  • 交互界面自定义CSS 也可以留空。

点保存,然后回到TalkAdmin页面,可能要刷新才能看到刚刚的命令,随后点击该命令,记下你的webhook地址中的key:

http://sc.ftqq.com/webhook/xxxxxxxxxxxx

配置ISSO

如果刚才安装时用了我的repo,就很简单了(没的话那就自己去看diff自己改吧……),首先切换到我的wechat-comment分支:

cd /path/to/isso
git checkout wechat-comment

然后重复安装步骤

sudo python3 setup.py install

接下来修改isso.conf文件(如果之前的搭建步骤正确走了一遍,现在应该知道我说的文件是哪个)。

[general]
;切换wechat通知方式
notify = wechat

[wechat]
;填你刚刚从TalkAdmin界面拿到的那个
web-hook-key = xxxxxxxxxxx

[moderation]
;记得把审核功能打开先
enabled = true

然后就OK了,测试一下吧。