开源评论系统 Isso 全攻略

2018-11-15 admin

博客评论系统现状:

  • 多说已经倒闭了,将于 2017.6.31 结束服务
  • Disqus 国内非常不稳定,虽然用了一段时间,但是发现最近好像有广告了,有很多乱七八糟的请求。
  • 畅言估计和多说差不了多少,没看到赢利点。
  • 网易云跟帖,不能设置昵称,不能匿名评论,加了官方群,都是提问的,管理员不作为。
  • 然后就找到了这个开源的评论系统:Isso

2017.5.1 update:新增微信审核评论的方法,见:微信审核开源评论系统 Isso 的评论

官网 https://posativ.org/isso/ Github https://github.com/posativ/isso/

安装

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

使用 pip 安装

要求:

  • Python 2.6, 2.7 or 3.3+ (+ devel headers)
  • SQLite 3.3.8 +
  • C 编译器

先安装 python 和依赖

Debian/Ubuntu 系统:

~> sudo apt-get install python-dev sqlite3 build-essential

对于 Fedora/Centos 系统 :

~> sudo yum install python-devel sqlite
~> sudo yum groupinstall "Development Tools"

注:这个 Development Tools 我没有安装成功,但是没影响

安装 Isso

~> pip install isso

or

~> easy_install isso  

注:我是用 Python 2 安装的,在 Python 3 上面报 sqlite3 的错误,没法用。

使用操作系统的包管理器安装

注:上述方法我没有实验

从源码安装

要求:

  • Python 2.6, 2.7 or 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/posativ/isso.git
~> cd isso/

注:截止2017.3.30,最新版为 0.10.7-dev ,经测试没法用,各种404。后来从 github Release 下载的 0.10.5 和 0.10.6 均正常。

创建一个虚拟环境(推荐,我没用,我用的 pyenv):

~> virtualenv .
~> source ./bin/activate

安装 Isso 及其依赖:

~> python setup.py develop  # or `install`
~> isso run

安装 JavaScript 模块:

~> make init

优化前的 js:

<script src="/js/config.js"></script>
<script data-main="/js/embed" src="/js/components/requirejs/require.js"></script>

压缩 js:

~> npm install -g requirejs uglify-js jade
~> make js

配置

服务端配置

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

自己编写一个配置文件 : isso.conf

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

[server]
; 监听的地址和端口 : 0.0.0.0 代表任何人可以访问
listen = http://0.0.0.0:8001/

[smtp]
username = 
password = 
host = smtp.mxhichina.com
port = 25
security = none
to =
from = 
timeout = 

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

客户端配置

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

<script data-isso="/prefix/"
        data-isso-css="true"
        data-isso-lang="ru"
        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="https://zhangnew.com/js/embed.js"></script>

使用

导入 Disqus 或 Wordpress 的评论,这一点很好。可怜了多说用户。

isso -c /path/to/isso.conf import disqus-or-wordpress.xml

运行命令:

isso -c /path/to/isso.conf run

部署

文档: https://posativ.org/isso/docs/extras/deployment/

gevent

pip install gevent
isso -c my.cfg run

uWSGI

安装 :

~> apt-get install build-essential python-dev
~> pip install uwsgi

配置文件:

[uwsgi]
http = :8080
master = true
; set to `nproc`
processes = 4
cache2 = name=hash,items=1024,blocksize=32
; you may change this
spooler = /tmp/isso/mail
module = isso.run
; uncomment if you use a virtual environment
; virtualenv = /path/to/isso
env = ISSO_SETTINGS=/path/to/isso.cfg

运行:

~> mkdir /tmp/isso/mail
~> uwsgi /path/to/uwsgi.ini

注:该方法运行失败,有一个 status code 报错。

gunicorn

我现在用的是这种方式,支持 https

$ pip install gunicorn

运行:

$ export ISSO_SETTINGS="/path/to/isso.cfg"
$ gunicorn -b 0.0.0.0:8001 -w 4 --certfile=certificate.crt --keyfile=private.key --preload isso.run

其他部署方式

见文档:

  • mod_wsgi
  • mod_fastcgi
  • Openshift

优缺点

优点

缺点

  • 不支持回复评论时通知评论作者, Isso 的作者在考虑要不要 merge 这个 pull request我根据这个 pr 实现了该功能)。
  • avatar 头像不能关联 gravatar.com 的头像(自己实现了)。
  • 评论不好管理,常规方法可以通过邮件提醒里面的链接来删除评论。非常规方法就要修改数据库了,sqlite 进入命令行:
ATTACH 'comments.db' as isso;
SELECT id,author,text from isso.comments;
DELETE FROM isso.comments WHERE id=87;

转载自我的博客 https://zhangnew.com

[转载]原文链接:https://segmentfault.com/a/1190000017026931

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-45556.html

文章标题:开源评论系统 Isso 全攻略

相关文章
Clappr——开源的Web视频播放器
巴西著名的门户网站 Globo.com(视频播放器),使用的是基于OSMF的Flash组件。在最近几年的发展过程中,Globo为视频平台陆续添加了不少额外功能,例如: 字幕,广告,画中画播放等。然而,由于缺乏针对视频平台进行维护的专门小组,...
2016-01-13
使用AngularJS和PHP的Laravel实现单页评论的方法
目前,Laravel和Angular均已经成为了Web发展世界里非常著名的工具。Laravel以给PHP社区引入的伟大内容著称,Angular以其惊人的前端工具及简单著称。组合这两大框架似乎是合乎逻辑的下一步。 在我们的使用环境下,我们将使...
2017-03-25
axios的全局配置
新建axios-init.js文件 import axios from &#x27;axios&#x27;; export default()=&gt;{ let loadingInstance; &#x2F;&#x2F;创建Loa...
2018-03-22
原生js实现新闻列表展开/收起全文功能
知识要点 1.实现原理很简单,通过点击a标签设置div的display属性隐藏或者显示, 主要是对dom操作的掌握。 2.需要用到的dom操作: parentNode 获取父级元素 nextSibling获取下一个紧跟的节点 previou...
2017-02-27
javascript获取本机操作系统类型的方法
废话不多说了,下面通过一段代码示例介绍一下,希望能够给需要的朋友带来或多或少的帮助。 示例代码: function GetOSInfo() { var _pf=navigator.platform; var appVer=navig...
2017-03-29
layer弹出层中H5播放器全屏出错的解决方法
1. 在layer弹窗组件中 如果使用了flash播放器,全屏是正常的 但若使用了HTML5的播放器,全屏失效 举个栗子 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta c...
2017-03-16
javascript中CheckBox全选终极方案
在我们的程序开发中经常会要用到CheckBox的全选,通常情况下是在一些数据绑定控件中如Gridview等 下面以Repeater为例,在Repeater的header 和item中放入CheckBox控件 。 &lt;asp:Repeat...
2017-03-23
对JavaScript的全文搜索实现相关度评分的功能的方法
全文搜索,与机器学习领域其他大多数问题不同,是一个 Web 程序员在日常工作中经常遇到的问题。客户可能要求你在某个地方提供一个搜索框,然后你会写一个类似 WHERE title LIKE %:query% 的 SQL 语句实现搜索功能。一开...
2017-03-24
JavaScript 常见安全漏洞和自动化检测技术
前言 随着 Web2.0 的发展以及 Ajax 框架的普及,富客户端 Web 应用(Rich Internet Applications,RIA)日益增多,越来越多的逻辑已经开始从服务器端转移至客户端,这些逻辑通常都是使用 JavaScri...
2017-03-29
javascript实现控制浏览器全屏
功能很简单,代码也很简洁,这里就不多废话了 function fullScreen() { var el = document.documentElement, rfs = el.requestFullScreen || el....
2017-03-22
回到顶部