×

用ISSO自建静态博客的评论系统

96
weishu
2017.08.30 22:15* 字数 1522

自从多说倒闭之后,静态博客的博主们就比较难受了——没有评论的博客,如死水一潭,了无生机。

有人迅速切换到了网易云跟帖,结果不久就传来也要关门的消息;倒是友言还在苟延残喘,我前段时间还试了下,虽然还能用,但是几乎不可用:访问速度巨慢务必,还经常出现服务器错误;虽有多说评论导入的功能,但是无法正常使用;联系客服也没有任何反应。估计也快不行了吧。本来打算切换到畅言的,无奈要备案;后来看到这条消息:网信办:网站不得向未实名认证的用户提供跟帖评论服务;我估计,第三方评论系统都活不长久吧,只能自力更生了。

所幸,已经有各种开源评论系统的解决方案,比如HashOverISSO;ISSO是用python写的,而且在github上star也不少,于是我就选择它了;接下来,我将手把手教你用ISSO搭建属于自己的评论系统。

准备环境

要搭建属于自己的评论系统,首先得有个属于自己的服务器来提供评论服务。但是这个条件达成比较困难,所以很多人选择了静态博客,托管在pages上就行;但是评论系统不一样,服务器是必不可少的(很显然评论数据没办法静态存储)。不过如果你需要科学上网的话,现在环境这么严峻,有个自己的VPS搭个梯子几乎是必备的了,正好,可以借助这个VPS来做自己的评论系统服务器。

(如果你没有属于自己的VPS,那么下文就不用看了 :)

安装ISSO

现在这个年代,部署环境的话,Docker是第一选择。果不其然,ISSO的docker版已经有人写好了;如果你的VPS条件支持的话,建议直接使用docker部署,省心省力。不过我买的VPS,Linux内核版本过低,Docker不支持,无法手动安装;只能选择自己安装了 :(

至于具体安装过程,无非就是敲一些命令,这不是本文重点;下面两篇文章介绍的很详细,我就不细说了。

  1. Docker版
  2. 直接安装版

按照上面两篇文章的配置,你的博客应该就能看到评论了;不过这还远远不够。

配置邮件通知

第三方评论系统,除了聚合社交平台的功能,还有一个重要的是评论管理;ISSO是没有这样的评论管理后台的,这就会出现:别人评论了你你无法知晓,垃圾广告评论也无法删除等一系列蛋疼的问题。因此,一定要给ISSO配上邮件通知,不然几乎不可用。

如果你的VPS是Ubuntu的话,应该就自带smtp server了,直接配置一下ISSO就能自动在收到评论的时候通知你;具体配置可以参考我的:

[general]
dbpath = /var/lib/isso/comments.db
log-file = /var/lib/isso/log.txt
host = http://weishu.me
max-age = 0
# 评论通知方式:smtp邮件发送
notify = smtp
[server]
listen = http://0.0.0.0:8080/
[guard]
enabled = true
ratelimit = 3
require-email = true
[smtp]
# smtp 服务器名,我选择的gmail邮箱,是这样;qq邮箱或者别的的话需要查一下
host = smtp.gmail.com 
port = 465
# 加密方式,gmail必须
security = ssl
username = gmail邮箱用户名
password = gmail邮箱密码
# 通知邮件发到哪里,可以与上面的相同,那就是自己发给自己
to = twsxtd@gmail.com
from = "ISSO Comment System" <no-reply@isso.com>
timeout = 10

数据导入

我之前使用的多说评论系统,ISSO是支持评论导入的,不过只支持disqus的格式;所幸,多说格式可以导出为disqus,使用如下方式即可:

$ wget https://raw.githubusercontent.com/JamesPan/duoshuo-migrator/master/duoshuo-migrator.py
$ python2 duoshuo-migrator.py -i duoshuo.json -o wp.xml

然后用如下命令导入isso:

# isso -c /etc/isso.conf import wp.xml

但是导入过程不一定全都对,可能需要你自己修改数据库;isso的评论是一个sqlite的数据库文件,你可以使用任意sqlite客户端直接修改。

数据备份

由于我的评论系统搭建在VPS上,万一哪天vps出了问题,那我的评论数据就没了,因此,一定要设置一个备份措施。我选择使用github备份,直接建一个repo放我的评论数据库,然后在VPS上做一个定时任务,定时把数据库文件同步到github上就行。

定时任务的话,Linux系统可以直接使用crontab,灰常简单,用它来执行你的备份脚本;直接在终端执行 crontab -e编辑 cron的配置,添加如下一行:

0 7 * * * /backup.py

这样,每天早上七点,VPS就会定时执行backup脚本,在这个脚本里面干备份的事就行了;我的备份脚本如下:

#! /usr/bin/env python

import subprocess
import os
import time

isso_dir = '/var/lib/isso/'

def main():
    os.chdir(isso_dir)
    try:
        subprocess.check_call('tar -zcvf comments.tar.gz comments.db', shell=True)
    except:
        exit(1)
    try:
        subprocess.check_call('git add .', shell=True)
    except:
        exit(2)
    try:
        subprocess.check_call('git commit -m "backup at %s"' % time.ctime(), shell=True)
    except:
        exit(3)
    try:
        subprocess.check_call('git push -u origin master', shell=True)
    except:
        exit(4)
    print "success at: %s" % time.ctime()

main()

这里我把数据库文件压缩了一下,尽量 省点空间 :) 然后的话,你的VPS上要安装git,并且在你的github上要配置公钥,这样就能免登提代码了;具体如何干github设置上介绍的很详细,就不赘述了。

配置样式

不得不说,ISSO默认的样式我真的不能忍;太TM简陋了。。。自己动手吧,对CSS又不是那么熟,最好的办法是找一个已经有的,然后改一下符合自己博客的风格。ISSO github的isso上有很多人丢出了自己的博客,我随便找了一个喜欢的;用chrome开发者工具把他的css导出来了。可是它的css有三千多行,并非对我完全有用的;于是我又安装了 uncss 删除了没有用的css样式;最终调了几个颜色,边距字体,就成了我自己的css _

就这样,一个属于自己的评论系统就搭建完毕了,大家可以去我的博客围观:http://weishu.me/guestbook/

随笔
Web note ad 1