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 更新
其实发这篇文章之后不久,因为服务器忘记交钱了,评论系统就没了。之后也懒得再 弄了。