I’LL BE HERE

In solitude, where we are least alone.

Comment Ok

评论系统已经装好了,所以现在可以评论了(大概)。附带上让 Isso 在本机运行的简单的操作步骤(需要预装 Docker)。

本来想用 Disqus 当评论系统,但是我发现,现在用 Disqus 居然要钱了。 虽然头 30 天能免费用,但是之后要 9 块钱(美金)一个月。

想了一下,决定把评论系统放在自己的服务器里。然后找到了一个叫 Isso 的东西。这个就相当与能放在自己服务器里的 Disqus。 用这个的话,读者无需注册就可以发表评论。真是好东西。

安装过程也超简单。Docker 就是方便,妈妈再也不用担心咱依赖装不好了。 如果服务器上装了 Docker,那么只要像这样一下——

git clone https://github.com/posativ/isso.git
cd ./isso

# 因为依赖不少,所以如果网络不好的话,需要等一段时间
sudo docker build . -t isso

# 将容器中的 8080 端口映射到本机的 9090 端口
sudo docker run -d --rm --name isso -p 127.0.0.1:9090:8080 -v /opt/isso:/config -v /opt/isso:/db isso

—— Isso 就跑起来啦!让我们检验一下吧。用浏览器打开 http://127.0.0.1:9090/,应该就会看到 Bad Request 之类的文字; 打开 http://127.0.0.1:9090/js/embed.min.js 的话,应该就会看到一堆乱七八糟的 JavaScript。如果这样, 就证明安装真的成功了。

接下来的任务就是把 Isso 的评论框放到网页里。 为了说明简单,我假设访问 http://127.0.0.1:8080/ 可以浏览网站内容;

首先,要把 Isso 的评论框放到网页里面。打开需要放置评论框的网页,然后在相应位置插入:

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

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

然后在浏览器中打开这个网页,应该就可以看到,评论框已经有了。

但是,现在试着发评论的话,就会发现无法发送。因为评论框是通过 XMLHttpRequest 向评论系统(127.0.0.1:9090) 发送消息的。但是我们的网页站点 127.0.0.1:8080 与评论系统的站点 127.0.0.1:9090 不是相同的站点,所以, 在默认情况下,因为浏览器禁止跨域 XMLHttpRequest,所以评论发送就会失败。

接下来我们就要通过编辑 Isso 的配置文件来解决跨域问题。 打开 /opt/isso/ 文件夹,在里面新建一个文本文件 isso.cfg,打开并插入文本

[general]

dbpath = /db/comments.db

; 注意:是网页站点的网址!是 8080 而不是 9090!
host = http://127.0.0.1:8080

这样,http://127.0.0.1:8080 的网页就可以通过 XMLHttpRequest 来访问 http://127.0.0.1:9090 的内容了。

更新了配置文件之后,我们或许需要重启 Isso:

sudo docker restart isso

重启以后,再一次用浏览器打开网页站点 http://127.0.0.1:8080/,现在,应该就 OK了。注意,127.0.0.1 不能改成别的东西。比如,http://localhost:8080/ 都 不行。

以上就是为了让 Isso 在本机运行的简单的操作步骤。更完善的步骤,比如设置 子域名然后用 Nginx 反向代理、用 PyPi 的安装方法、配置文件的格式与条目、评论 的管理,请见 https://posativ.org/isso/docs/

2021.07.09 更新

其实发这篇文章之后不久,因为服务器忘记交钱了,评论系统就没了。之后也懒得再 弄了。