搭建开源评论系统 Isso 并支持微信审核评论

本贴最后更新于 2207 天前,其中的信息可能已经水流花落

评论系统现状:

  • 多说,友言已经倒闭了
  • Disqus 国内非常不稳定,虽然用了一段时间,但是发现最近好像有广告了,有很多乱七八糟的请求,并且需要用户登录国外几个网站的帐号才能评论
  • 畅言多说差不了多少,没看到赢利点,还需要备案审核
  • 网易云跟帖,不能设置昵称,不能匿名评论,加了官方群,都是提问的,管理员不作为。
  • 腾讯产品:吐个槽,https://tucao.qq.com/,需要用户 qq 或者微信登录,定制化程度低
  • Wildfire 野火评论系统 https://wildfire.js.org/#/ 看着也不错,完全开源
  • 开源评论系统:isso,由 python 和 Javascript 编写,可自己部署,数据保存在自己手里

参考文档:

官网 https://posativ.org/isso/
官方 github https://github.com/posativ/isso/
搭建支持微信审核评论的 ISSO 评论系统 https://kagami.xyz/post/build-isso-comment-system-with-wechat/
微信审核功能的 github https://github.com/regomne/isso
开源评论系统 Isso 全攻略 https://zhangnew.com/isso-open-source-comment-system.html

安装 isso

节选并翻译自官方文档:https://posativ.org/isso/docs/install/

python 虚拟环境安装

安装 pyenv,切换成 python3 环境(参考 http://www.cnblogs.com/npumenglei/p/3719412.html)

从源码安装 isso

要求:

  • Python 3.3+ (+ devel headers)
  • Virtualenv
  • SQLite 3.3.8 or later
  • a working C compiler
  • Node.js, NPM and Bower(安装 nodejs 后 可以使用 npm 安装 Bower)

克隆仓库:

 git clone https://github.com/regomne/isso
 cd isso/
 git checkout wechat-comment

切换 python 版本,支持微信审核的版本必须要用 python3 版本

 virtualenv -p /root/.pyenv/shims/python3.6 .
 source ./bin/activate

安装 Isso 及其依赖:

 python setup.py install 

安装 JavaScript 模块:

 make init

压缩 js:

 npm install -g requirejs uglify-js jade
 make js

配置

指定配置文件运行

 ./bin/isso -c share/isso.conf run

配置 Server 酱

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

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

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

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

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

配置 TalkAdmin

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

  • 命令名称 随便。
  • 命令正则 空。
  • 选择下行命令
  • WebHook 地址 空。
  • 交互界面模板 如下填写(照抄的刚刚那篇文章里的):
通过 a> | 拒绝a> | 查看a>
  • 交互界面自定义 CSS 也可以留空。

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

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

isso 服务端配置

详情见文档 https://posativ.org/isso/docs/configuration/server/

参考默认配置文件 share/isso.conf 修改

[general]
; 数据库位置,注意检查权限,如果没有会自动创建。
dbpath = /var/lib/isso/comments.db
; 博客的地址,可以添加多个,比如 http 和 https
host =
 http://localhost:4000/
 http://comment.dprating.com/

[moderation]
; enable comment moderation queue. This option only affects new comments.
; Comments in modertion queue are not visible to other users until you activate
; them.是否开启审核
enabled = true

; remove unprocessed comments in moderation queue after given time.为审核评论删除时间
purge-after = 30d
 
; 审核评论通知方式,使用 微信,注意Wechat的首字母W要大写,代码里检查的是Wechat不是wechat
notify = Wechat
[wechat]

;web hook key of TalkAdmin,
web-hook-key = 123-4567

[server]
; 监听的地址和端口 : 0.0.0.0 代表任何人可以访问,这里端口号跟nginx配置的反向代理保持一致
listen = http://0.0.0.0:8001/

[guard]
enabled = true
;每分钟新增评论数量
ratelimit = 30
;单个thread评论数量限制
direct-reply = 30
; 是否允许回复自己
reply-to-self = true
; 是否必须填写作者
require-author = false
; 是否必须填写邮箱
require-email = false

isso 客户端配置

详情见文档 https://posativ.org/isso/docs/configuration/client/

demo 网页源码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <section id="isso-thread"></section>
</body>
</html>
<script data-isso="http://comment.dprating.com/isso/"
        data-isso-id="123"
        data-isso-css="true"
        data-isso-lang="zh_CN"
        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"
        data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..."
        data-isso-vote="true"
        data-vote-levels=""
        src="http://comment.dprating.com/isso/js/embed.min.js"></script>

部署

nginx 配置

server {
        listen 80;
        listen [::]:80;

        server_name example.com;		
		root         /opt/isso;

        location /isso {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Script-Name /isso;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://localhost:8090;
        }
}

把 demo 网页文件放到/opt/isso 下面即可
检查 Nginx 配置并重新加载

nginx -t
nginx -s reload
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    408 引用 • 3574 回帖
  • 评论系统
    2 引用
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...