今儿有朋友浏览过博客之后,说一个博客怎么能没有评论系统呢? 嘛,有需求就要满足,马上找一个合适的。。。(其实本来想自己写一个的,但是实在没时间)
总结
每一篇文章的最后,都会出现评论区。通过简单的注册:
- 输入邮箱(不需要验证,只是用于重置账号);
- 用户名(可以用于登陆);
- 密码+重复一遍。
然后就可以畅所欲言。
Bonus:
副产物是一个私有论坛:传送门。嘛,朋友们有兴趣可以发发贴什么的(评论时注册的既是论坛账号)。
啰嗦的分界线(下文无关紧要)
筛选
之前弄过disqus的评论系统,支持各种不存在
的社交网络登陆。。后来发现被墙,国内网络根本刷不出评论区。
据说国内有个“多说”系统挺不错。。。但是。。。想想国内小公司的隐私保护,还是不要让访问我的博客成为大家社交账号泄密的导火索。
于是,NodeBB成功引起了我的注意。它本身是一个论坛系统(参考常见的discuz!),而且十分整洁,可以胡乱定制改写(基于Node.JS)。通过安装插件,和Ghost搭建的博客联动,形成评论系统,博客也会同步到论坛中。[名字也挺传神LOL]
在自己的服务器上搭建NodeBB
论坛系统,同一服务器上的Ghost博客暗地里访问论坛获取评论信息。这样即避免了被墙,又保证了用户安全(我的破论坛账号也没有什么隐私问题吧)。唯一的缺点就是,得麻烦想评论的用户稍微注册一下我的破论坛账号(我想我已经minimize了注册流程=-=)。
技术细节
installation guide
yum -y groupinstall "Development Tools"
yum -y install git redis ImageMagick # npm already installed
systemctl start redis
systemctl enable redis
cd /var/www
git clone -b v1.4.2 https://github.com/NodeBB/NodeBB nodebb
###
free
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
mkswap /var/swap.img
swapon /var/swap.img
free
###
cd nodebb
npm install
Setup:
./nodebb setup
# type redis when asking for database
# or edit `config.json` file afterwards
# keep the admin password
# An administrative user was automatically created for you:
# Username: admin
# Password: f0f000be
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --reload
./nodebb start
./nodebb stop
# run forever
pm2 start app.js --name "nodebb"
# stop or status
pm2 stop nodebb
pm2 restart nodebb
pm2 reload nodebb
pm2 show nodebb
configure to listen port 80. Edit file /etc/nginx/conf.d/your-domain-name.conf:
server {
listen 80;
server_name your-domain-name.com;
location ^~ /forum {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:4567;
}
}
edit config.json
file's url
value and restart nginx.
systemctl restart nginx.service
add Ghost comment
cd /var/www/nodebb
npm install nodebb-plugin-blog-comments
- Log into the Admin Control Panel of your NodeBB forum
- Click on the Reload button at the bottom of the main Admin page
- Refresh the page and open up Extended -> Plugins and activate
nodebb-plugin-blog-comments
- Go back to General -> Dashboard and Restart NodeBB
- Refresh the Page
- Go to Installed Plugins -> Blog Comments
- Switch over to your Ghost theme files now
- Open and add the following after your
{{content}}
in yourpost.hbs
file. Also, change thenbb.url
to be the web address where your NodeBB forum is located:
<a id="nodebb-comments"></a>
<script type="text/javascript">
var nbb = {};
nbb.url = 'http://zengwh.com/forum'; // EDIT THIS
(function() {
nbb.articleID = '{{../post.id}}'; nbb.title = '{{../post.title}}';
nbb.tags = [{{#../post.tags}}"{{name}}",{{/../post.tags}}];
nbb.script = document.createElement('script'); nbb.script.type = 'text/javascript'; nbb.script.async = true;
nbb.script.src = nbb.url + '/plugins/nodebb-plugin-blog-comments/lib/ghost.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(nbb.script);
})();
</script>
<script id="nbb-markdown" type="text/markdown">{{../post.markdown}}</script>
<noscript>Please enable JavaScript to view comments</noscript>
Restart Ghost pm2 restart Ghost
.