Pages

Monday, 26 November 2018

Debian / Ubuntu vps上,搭建isso评论系统

由于‘多’要关闭,某言对 HTTPS 支持不友好,剩下国产的服务都一般,而国外的服务 Disqus 会加载一大堆追踪的 JS,对于有洁癖的博主来说,全世界第三方评论系统基本没有一个好用,所以我们可以考虑自己搭建 isso 评论系统
isso 是基于 Python 写的一套评论系统,用途就是代替以上说的第三方不靠谱平台,而官网的教程坑很多,新手没有接触过运维工作安装起来难度较大,所以我就整理一下基本的教程,尽量可以让所有用户都能自行搭建评论系统
本文所有操作均在 root 用户下进行,请自行切换
首先,更新系统
apt-get update && apt-get upgrade
如果您用的 Debian 9.x 开启了 backports 也可以更新下
apt-get -t stretch-backports update && apt-get -t stretch-backports upgrade
对应 Debian 8.x 命令如下
apt-get -t jessie-backports update && apt-get -t jessie-backports upgrade

1、安装 PIP

pip (Python Package Index) 是 Python 软件包管理系统,简单方便省去自己编译安装的各种麻烦
首先,我们安装一些必要的工具包
apt-get install python-dev build-essential -y
然后直接安装 pip
apt-get install python-pip
如果 Debian 8.x 下提示
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python-pip : Depends: python-setuptools (>= 0.6c1) but it is not going to be installed
              Recommends: python-dev-all (>= 2.6) but it is not installable
E: Unable to correct problems, you have held broken packages.
则使用 backports 进行安装
apt-get -t jessie-backports install python-pip
接着更新升级 pip
pip install --upgrade pip

pip 的常见用法

安装 / 升级某软件
pip install --upgrade <package name>
卸载某软件
pip uninstall <package name>
搜索某软件
pip search <search query>
获取某软件信息
pip show <package name>

2、安装 isso

一条命令即可
pip install isso
此时 isso 已经被完整安装在 /usr/local/bin/isso 了

3、安装 SQLite3

由于 isso 用的是 SQlite3 数据库,我们需要安装
apt-get install sqlite3
如果 Debian 8.x 开启了 Backports ,可以用如下命令
apt-get -t jessie-backports install sqlite3
新建立一个数据库目录并设置权限
mkdir -p /var/lib/isso
chown isso:isso /var/lib/isso -R

4、配置 isso

新建立一个 conf 文件,比如 /etc/isso.conf 演示内容如下
[general]
dbpath = /var/lib/isso/comments.db
name = example
host = http://example.com/
       http://example.org/
notify = smtp
log-file =

[server]
listen = http://localhost:8090/

[moderation]
enabled = true
purge-after = 30d

[smtp]
username = username@example.com
password = password
host = smtp.example.com
port = 587
security = starttls
to = 你的邮箱地址
from = "Isso Comment"<username@example.com>
timeout = 10

[markup]
options = strikethrough, superscript, autolink
allowed-elements = 
allowed-attributes =

[guard]
enabled = true
ratelimit = 3
direct-reply = 3
reply-to-self = false
require-author = true
require-email = true

[hash]
salt = Eech7co8Ohloopo9Ol6baimi
algorithm = pbkdf2
按照官方的配置文件,我们来一条一条说明
[general] 是基本配置,必须填写
dbpath 就是数据库文件,刚才我们已经建立了 /var/lib/isso/ 目录,所以他会自动生成 *必填
name 是这一个配置文件的名字,如果本地只搭建一个 isso 的话可以忽略,搭建多个 isso 的话需要设置 *可选
host 是你引用 isso 的 JS 的网站地址,需要写全,如果有多个的话就多加几行,只有一个域名的话留下一个即可 *必填
notify 评论审核通知方式,如果不开启审核可以不设置,设置了 SMTP 就需要在下面的 [smtp] 设置邮件发送方式 *可选
log-file 记录日志,后续我们会提到,一般不需要开启
[server] 本地服务端设置
listen 需要监听的端口,可以自定义,这里我们用 8090 为例
[moderation] 是否开启评论审核,不需要的话可以写 enabled = false
purge-after 指定多少时间后删除还在审核队列里的评论
[markup] 是 Misaka Markdown 插件
options 可选 strikethroughsuperscriptautolink 比如不需要自动加入超链接可以去掉 autolink
allowed-elements 评论开启 HTML 标签,默认允许的标签有 ablockquotebrcodedelemh1h2h3h4h5h6hrinsliolpprestrongtabletbodytdththead 和 ul 可以根据自己情况修改
allowed-attributes 评论开启 HTML 标签的属性,默认只允许 align 和 href
[smtp] 审核评论发送邮件通知的设置,具体可以咨询你使用的邮件服务,按服务商提供的配置填写即可,不再详细描述
[guard] 开启评论防火墙,如不需要可以填写 enabled = false
ratelimit 每个访客一分钟最多可以评论的次数
direct-reply 评论回复次数
reply-to-self 是否可以回复自己的评论,需要配合 JS 引用,下面会说
require-author 是否要求写名字,需要配合 JS 引用,下面会说
require-email 是否要求写 Email 地址,需要配合 JS 引用,下面会说
[hash] 加密评论的身份方式,如 Email 地址,没有特殊需求可以忽略
详细的解释可以参考官方的文档,如果没有特殊的需求,也不需要审核评论,直接可以上一份最简单的配置文件,如下
[general]
dbpath = /var/lib/isso/comments.db
host = http://example.com/

[server]
listen = http://localhost:8090/

[moderation]
enabled = false
保存这个文件之后,就可以启动 isso 看输出消息是否正常
isso -c /etc/isso.conf run
没有报错消息则说明你的配置文件木有问题,按 ctrl + c 停止 isso

5、安装 Nginx 并配置.

apt-get install nginx
Nginx 配置文件举例如下, isso 会反代在 example.com/isso 目录
server {
        listen 80;
        server_name example.com;  

        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;
        }
}
检查 Nginx 配置并重新加载
nginx -t
nginx -s reload

6、安装 Supervisor 并配置

Supervisor 是一款进程守护软件,目的是保持 isso 在后台运行
因为前面已经安装了 pip,所以直接 pip 安装即可
pip install supervisor
生成一份 supervisord.conf 我们举例放在 /etc/supervisord.conf
echo_supervisord_conf > /etc/supervisord.conf
修改 /etc/supervisord.conf 文件,在最后面加入
[program:isso]
command = /usr/local/bin/isso -c /etc/isso.conf run
directory = /var/lib/isso
user = isso
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/isso.log
stderr_logfile = /var/log/supervisor/isso_error.log
environment = LANG="en_US.UTF-8"
生成日志目录
mkdir -p /var/log/supervisor
然后启动 Supervisor
supervisord -c /etc/supervisord.conf
如果没有报错,则可以测试 isso 是否正确运行
curl http://example.com/isso/
如果返回下面结果,则一切正常
root@example ~ # curl http://example.com/isso/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>missing uri query</p>
如果返回的是 502 Bad Gateway 错误,那么你需要仔细检查日志 /var/log/supervisor/isso_error.log 以及所有的配置文件
接着把 Supervisor 加入开机运行,编辑 /etc/rc.local 文件,在 exit 0 前面加入一行 supervisord -c /etc/supervisord.conf 即可

7、在网站引用评论

根据官方文档,直接引用一段 JS 即可,具体参数根据需求自行调整
<script data-isso="http://example.com/isso/"
        data-isso-css="true"
        data-isso-lang="en"
        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://example.com/isso/js/embed.js"></script>
data-isso isso 安装的 URI
data-isso-css 使用默认的 CSS 如果需要自己改 CSS 则设置成 false
data-isso-lang 默认语言,参考 ISO 639-1 编码,可选语言列表在这儿
data-isso-reply-to-selfdata-isso-require-authordata-isso-require-email 需按照 isso 配置文件来,请保持一致
data-isso-max-comments-top 一页显示的评论数
data-isso-max-comments-nested 最多嵌套评论数
data-isso-reveal-on-click 超出评论数后点击显示的评论数
data-isso-avatar 显示头像
data-isso-avatar-bg 头像背景
data-isso-avatar-fg 头像颜色
data-isso-vote 开启评论的支持和反对
data-vote-levels 评论支持和反对的等级算法,具体请参考官方的文档
如果没有特殊需求,直接来一行
<script data-isso="http://example.com/isso/" src="http://example.com/isso/js/embed.min.js"></script>
接着在你网站适当的位置加入一个 section 标签即可
<section id="isso-thread"></section>
如果你网站有多个域名,可以固定当前页面的 URI 和标题,很适合 WordPress 等程序的用户,只有一个域名的忽略即可
<section data-title="当前标题" data-isso-id="当前URI" id="isso-thread"></section>
好了,大功告成.
----------------
a Disqus alternative.
https://posativ.org/isso/
Isso – a commenting server similar to Disqus.

Isso – Ich schrei sonst – is a lightweight commenting server written in Python and JavaScript. It aims to be a drop-in replacement for Disqus.

See posativ.org/isso for more details and documentation.

from https://github.com/posativ/isso

--------------------------------------------

评论系统 -Isso

Isso是一款基于Python 和 Javascript编写的开源评论系统。类似disqus评论系统。支持使用 Markdown 评论,使用 SQLite ,可导入Disqus & WordPress 。 可配置 JS 客户端,支持 Firefox, Safari, Chrome 和 IE10。遵守MIT开源协议。

特性:

    支持邮件通知,每个评论都发给管理员,评论者可以接收别人回复自己的评论;
    支持 Gravatar 头像显示(支持使用CDN镜像),或者随机头像;
    支持 MarkDown;
    后台审核管理功能;
    对评论进行<顶>/<踩>;

https://github.com/posativ/isso
 

No comments:

Post a Comment