Ubuntu 18.04 搭建Isso评论系统 教程

发布于 2019-01-20  224 次阅读


Isso是个用Python写的轻量级评论系统。在目前活着的第三方评论系统都不怎么靠谱的情况下,自建一套评论系统是个不错的选择。

由于官网上的安装教程写的比较简略,没怎么搭过Python环境的人可能会踩到许多坑,因此把官方文档中的教程稍微整理了一下。按着本文中所介绍的步骤操作也许能够更轻松地把Isso搭建好。

1.关于Isso

项目地址:https://github.com/posativ/isso

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

2.安装方法

本文中的所有操作都是在root用户下进行的。如果你用的不是root用户,请切换用户或者自行加sudo

2.1.准备工作

先惯例地更新下软件包列表。

apt update

2.2.安装SQLite 3数据库

Isso使用SQLite 3数据库存放评论数据。在安装Isso前先来把数据库装好吧。

apt install sqlite3 -y

数据库安装完毕后,新建一个数据库目录。

mkdir /var/lib/isso -p

2.3.安装pip包管理器

如果你对Python有所了解的话,那么你一定听说过pip。这是个Python的包管理系统,通过它可以轻松安装Python库/软件包。目前(2019年1月)Python分2.x和3.x两个版本,互不兼容,因此pip也分Python 2版和Python 3版。由于Isso同时支持Python 2.x和Python 3.x,两个Python版本均可以正常安装。

本文中将以Python 3.x环境为例安装pip与Isso,如果想在Python 2.x环境下安装,把命令中的“3”全部去掉即可。

apt install build-essential python3-dev python3-pip -y

2.4.安装Isso评论系统

在使用pip安装Isso之前需要先装两个库,否则无法正常安装。

pip3 install wheel setuptools

接着安装Isso即可。

pip3 install isso

至此,Isso评论系统就已经顺利安装在了你的服务器上。

2.5.安装Nginx服务器

虽然Isso评论系统的监听端口可以自己设置,但是一般来说不会设置在80/443端口。这就需要做个反向代理了。本文将以Nginx为例介绍Isso的反向代理的设置方法。

首先先安装Nginx。这里依旧使用Sury大佬制作的PPA安装。

apt install software-properties-common -y
add-apt-repository ppa:ondrej/nginx-mainline
apt update
apt install nginx -y

安装完毕后,编写一个反代Isso的配置文件(这里假设Isso监听的是8090端口)。

新建一个配置文件。

vim /etc/nginx/conf.d/isso.conf

i键进入编辑模式,将下面的配置文件根据实际情况修改之后粘贴到shell中。

server {
  listen 80;
  listen [::]:80;
  # listen 443 ssl http2;
  # listen [::]:443 ssl http2;

  server_name example.com;

  # if ($server_port !~ 443){
    # rewrite ^(/.*)$ https://$host$1 permanent;
  # }

  # ssl_certificate    /path/to/fullchain.pem;
  # ssl_certificate_key    /path/to/privkey.pem;
  # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  # ssl_prefer_server_ciphers on;
  # ssl_session_cache shared:SSL:10m;
  # ssl_session_timeout 10m;
  # error_page 497  https://$host$request_uri;

  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;
  }
}

粘贴完毕后按ESC键退出编辑模式,输入:wq并回车保存退出。

保存完毕后测试一下这个配置文件是否正常。

nginx -t

如果显示测试正常,重启Nginx服务即可让刚刚的配置文件生效。

service nginx restart

3.配置步骤

3.1.服务端配置

在创建配置文件之前建议先阅读一下官方文档中的服务端配置文件详细介绍。

新建一个配置文件,创建位置可以随意(例如/etc/isso.conf)。把下面的命令复制到记事本中,根据实际情况修改之后再全部粘贴到shell里即可。

cat >> /etc/isso.conf << EOF
[general]
dbpath = /var/lib/isso/comments.db
name = example
host = 
    http://example.com/
    https://example.com/
notify = smtp

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

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

[smtp]
username = yourmail@example.com
password = yourpassword
host = smtp.example.com
port = 587
security = starttls
to = anothermail@example.net
from = "Isso Comment"<yourmail@example.com>
timeout = 10
EOF

上面的那个配置文件是一个比较简单的版本。接下来会对里面的部分参数做一些简要说明。

  点击这里☆查看更多  

现在可以使用下面这条命令先测试一下配置文件是否正确。

isso -c /etc/isso.conf run

如果没有报错的话就表示刚刚保存的配置文件没有问题。按Ctrl+C键关闭Isso进程,进行下一步的配置。

3.2.客户端配置

这里所说的客户端就是将要使用Isso评论系统的网站啦。

建议先阅读一下官方文档中的客户端配置文件详细介绍。

在适当的位置加入一个这样的section标签。

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

如果需要固定当前URI和标题的话,可以这样写。

<section data-isso-id="当前URI" data-title="当前标题" id="isso-thread"></section>

接着在body标签底部引用这样一段JS。(注意把example.com换成你自己的域名)

<script data-isso="http://example.com/isso/" src="http://example.com/isso/js/embed.min.js"></script>

保存完毕修改过后的内容,客户端的配置就已经完成了。

4.运行Isso系统

Isso评论系统本身不能在后台运行。建议把它注册成系统服务,方便管理。

在GitHub上找到了个适用于Debian的Isso系统服务。能在Debian上运行的服务,在Ubuntu上运行也不会出什么问题。稍作修改就可以用了。

首先需要安装gunicorn。

pip3 install gunicorn

安装完毕之后,创建一个运行Isso进程的用户并且把Isso数据库目录的所有权赋予该用户。

useradd isso
chown isso:isso /var/lib/isso -R

新建一个空白的日志文件。

cat >> /var/log/isso.log << EOF
EOF

设置一下日志文件的权限。

chown isso:isso /var/log/isso.log

然后就能创建系统服务了。

cat >> /etc/systemd/system/isso.service << EOF
[Unit]
Description=lightweight Disqus alternative

[Service]
User=isso
Environment="ISSO_SETTINGS=/etc/isso.conf"
ExecStart=/usr/local/bin/gunicorn -b 127.0.0.1:8090 --log-file /var/log/isso.log --preload isso.run

[Install]
WantedBy=multi-user.target
EOF

创建完毕之后使用以下命令启动Isso评论系统。

service isso start

先查看一下运行状态。

service isso status

Ctrl+C结束查看。如果运行正常,就可以将该服务设置成开机运行了。

systemctl enable isso

5.评论管理

Isso系统的评论不是很好管理,想要删除某条评论的方式貌似只有通过评论审核邮件的删除链接来删除。邮件删掉了怎么办?只能用下面这个土办法咯。

所谓的土办法就是直接改数据库啦(重拾半懂不懂的SQL姿势)。

打开Isso评论数据库,进入SQLite 3的命令行。

sqlite3 /var/lib/isso/comments.db

先来确定一下想要删除评论的id。

SELECT id,author,text FROM comments;

然后通过指定id来删除评论(这里以删除id为1的评论为例)。

DELETE FROM comments WHERE id=1;

操作完成之后按Ctrl+Z退出SQLite 3命令行。

6.个人吐槽

好了,大功告成。Isso评论系统已经顺利安装在了服务器上。

最后依旧是惯例的吐槽环节。

看了看其它开源的评论系统,Isso可以说是做得超级好的几个之一了。虽然它和Disqus很像,但是Isso体积更小,而且也不会加载一堆乱七八糟的追踪JS。不过它还是有个缺点的,就是上面提到的评论管理问题。删个评论要翻数据库还是有点麻烦的……