自己的评论系统才是最好的评论系统,前段时间多说关闭了评论系统切换到网易云跟帖毕竟是Beta项目反垃圾系统太严格了,动不动就审核失败而且自己还看不到被系统删除的留言,而且目前在云跟帖的群里的管理员说目前该项目正在暂停状态意思云跟帖也随时会关闭,果断自搭建了个留言系统,综合实验了各个开源系统最终ISSO的系统最稳定,唯一的遗憾就是没有后台系统

准备环境

  1. 支持Python的环境
  2. 支持STMP的邮件服务器

环境依赖

摘抄官方(需要翻墙)https://posativ.org/isso/docs/install/

1
# for Debian/Ubuntu
2
sudo apt-get install python-setuptools python-virtualenv
3
# Fedora/Red Hat
4
sudo yum install python-setuptools python-virtualenv

安装ISSO (PIP包)

先安装 Python 的 PIP包管理工具
http://www.pip-installer.org/en/latest/

1
#安装到根Python目录
2
#Debian /usr/local/lib/python2.7/dist-packages
3
pip install isso
4
5
#安装到指定目录
6
source /opt/isso/bin/activate
7
pip install isso

创建配置文件

安装目录下有默认的配置文件 defaults.ini 把它拷贝到任意目录。直接修改也是可以的。
参数详解 https://posativ.org/isso/docs/configuration/server/
创建服务端配置文件 nano /home/isso.conf

1
;;;;;;;;;;;;;;;;
2
;基础设置
3
;;;;;;;;;;;;;;;;
4
[general]
5
;储存评论的SQLite数据库文件
6
dbpath = /home/comments.db
7
;允许使用的网站
8
host =
9
    http://www.hscbook.com/
10
    https://www.hscbook.com/
11
;允许评论发布后多少分钟内可编辑
12
;0代表关闭(不建议开启)
13
max-age  =  0
14
;新评论的通知(审核)方式:smtp,stdout
15
;smtp是每有一条评论就通过SMTP邮件服务器发送邮件
16
;stdout是每有一条评论就通过SSH控制台输出
17
;建议使用SMTP方式,可通过邮件管理评论
18
notify   =  smtp 
19
;系统日志的文件地址
20
log-file =  /home/ruan/isso/isso.log
21
;;;;;;;;;;;;;;;;
22
; 邮件服务器
23
;;;;;;;;;;;;;;;;
24
;SMTP邮件服务器地址
25
[smtp] 
26
username = 用户名
27
password = 密码
28
host     = SMTP主机
29
port     = SMTP端口
30
;邮件编码(默认utf-8)
31
;encoding: utf-8 
32
;邮件加密方式
33
security = ssl
34
;通知(审核)邮件发送到哪里
35
to       = mail@hscbook.com
36
;邮件的标题和发送地址
37
from     = "HscBook 评论通知" <fas@hscbook.com>
38
;STMP服务器的连接超时时间
39
timeout  = 15
40
;;;;;;;;;;;;;;;;
41
; 评论审核
42
;;;;;;;;;;;;;;;;
43
[moderation] 
44
;打开评论审核
45
enabled      =  true
46
;最大审核时间(超过这个时间评论会自动被删除)
47
purge-after  =  3d
48
;;;;;;;;;;;;;;;;
49
; 评论允许使用的元素标签
50
;;;;;;;;;;;;;;;;
51
[markup]
52
;markup插件
53
options = superscript
54
;允许使用的HTML标签
55
allowed-elements = blockquote,br,code,del,em,h1,h2,h3,h4,h5,h6,hr,ins,p,pre,strong,table,tbody,thead,td,th
56
;允许的HTML标签属性
57
allowed-attributes = align
58
;;;;;;;;;;;;;;;;
59
; 简单垃圾防御
60
;;;;;;;;;;;;;;;;
61
[guard] 
62
;是否开启
63
enabled         =  true
64
;每个IP每分钟最大评论数
65
ratelimit       =  2
66
;评论回复次数
67
direct-reply    =  3
68
;是否允许回复自己
69
reply-to-self   =  false
70
;是否必须输入名称
71
require-author  =  true
72
;是否必须输入邮箱
73
require-email   =  true
74
;;;;;;;;;;;;;;;;
75
; 加密KEY
76
;;;;;;;;;;;;;;;;
77
;对留言的邮箱地址进行加密
78
[hash] 
79
salt       =  pdsTiOa86HkuLsa6Xsrtyfd8
80
algorithm  =  pbkdf2
81
;;;;;;;;;;;;;;;;
82
; 评论服务地址
83
;;;;;;;;;;;;;;;;
84
;对外服务的地址
85
[server] 
86
;sock与http·二选一
87
;SOCK地址
88
;listen = unix:///tmp/isso.sock
89
;http地址
90
listen = http://0.0.0.0:8080/

在网站引用评论框

引用ISSO-JS文件

在页尾 footer 添加处引用JS文件和客户端参数设置

1
<script data-isso="//0.0.0.0:8080/"
2
        data-isso-css="true"
3
        data-isso-lang="ru"
4
        data-isso-reply-to-self="false"
5
        data-isso-require-author="false"
6
        data-isso-require-email="false"
7
        data-isso-max-comments-top="10"
8
        data-isso-max-comments-nested="5"
9
        data-isso-reveal-on-click="5"
10
        data-isso-avatar="true"
11
        data-isso-avatar-bg="#f0f0f0"
12
        data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..."
13
        data-isso-vote="true"
14
        data-vote-levels=""
15
        src="//0.0.0.0:8080/js/embed.js"></script>

参数详解 https://posativ.org/isso/docs/configuration/client/
|– 是否使用自带的CSS样式表
|–> data-isso-css="true"
|– 默认语言
|–> data-isso-lang="ru"
|– 是否允许回复自己(与服务端同步)
|–> data-isso-reply-to-self="false"
|– 是否必须输入名称
|–> data-isso-require-author="false"
|– 是否必须输入邮箱
|–> data-isso-require-email="false"
|– 一页内最多显示多少评论
|–> data-isso-max-comments-top="10"
|– 回复嵌套最大数
|–> data-isso-max-comments-nested="5"
|– 显示“显示评论”的阈值
|–> data-isso-reveal-on-click="5"
|– 是否使用像素头像
|–> data-isso-avatar="true"
|– 头像的背景颜色
|–> data-isso-avatar-bg="#f0f0f0"
|– 头像的颜色库(最多8个)
|–> data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..."
|– 开启评论的支持和反对
|–> data-isso-vote="true"
|– 支持和反对的显示算法
|–> data-vote-levels=""

插入评论框与评论数

使用下面两个标签的前提是必须引用JS文件
在文章页的评论框处插入ISSO评论框

1
<section id="isso-thread"></section>

在列表页和其他的任意位置插入评论记数

1
<a href="需要显示评论数的文章地址#isso-thread">Comments</a>

启动ISSO

输入:isso -c /home/isso.conf run

自启动ISSO脚本

摘抄官方文档 https://posativ.org/isso/docs/install/

1
#!/bin/sh
2
### BEGIN INIT INFO
3
# Provides:          isso
4
# Required-Start:    $local_fs $network
5
# Default-Start:     2 3 4 5
6
# Default-Stop:      0 1 6
7
# Description:       lightweight Disqus alternative
8
### END INIT INFO
9
10
EXEC=/opt/isso/bin/isso
11
EXEC_OPTS="-c /etc/isso.cfg run"
12
13
RUNAS=isso
14
PIDFILE=/var/run/isso.pid
15
16
start() {
17
  echo 'Starting service…' >&2
18
  start-stop-daemon --start --user "$RUNAS" --background --make-pidfile --pidfile $PIDFILE \
19
                    --exec $EXEC -- $EXEC_OPTS
20
}
21
22
stop() {
23
  echo 'Stopping service…' >&2
24
  start-stop-daemon --stop --user "$RUNAS" --pidfile $PIDFILE --exec $EXEC
25
}
26
27
case "$1" in
28
  start)
29
    start
30
    ;;
31
  stop)
32
    stop
33
    ;;
34
  restart)
35
    stop
36
    start
37
    ;;
38
  *)
39
    echo "Usage: $0 {start|stop|restart}"
40
esac

头像使用Gravatar

由于ISSO的作者担忧Gravatar的隐私泄露反对Gravatar功能,但是github上有一个Pull requests可以自行编译而支持Gravatar的头像显示
源Pull requests:https://github.com/posativ/isso/pull/317
我的分支链接:https://github.com/Hscpro/isso
不会用github就直接克隆我的GIT进行编译吧,编译教程点这里官方已在 0.11.0 增加了Gravatar头像、邮件回复、管理面板等功能
请注意官方教程上的环境依赖!编译安装与直接安装环境要求不一样

邮件回复通知

github上有一个Pull requests是实现邮件回复通知的提交
https://github.com/posativ/isso/pull/50

END

文章最后修订日期:2019-1-13 12:01:02
启用了ISSO评论,并写了个备份脚本定期自动备份评论数据到云盘,从此腰也不疼,再也不用担心他方评论系统哪天人家心情不好来个关闭,搬评论数据甚至痛失数据的灾难了。
名称和邮箱必须填写(给你自己一个身份吧亲),我也开启了邮件地址加密,你填写的邮箱并不会被垃圾蜘蛛扫描