[号外] 博客新增评论系统

今儿有朋友浏览过博客之后,说一个博客怎么能没有评论系统呢? 嘛,有需求就要满足,马上找一个合适的。。。(其实本来想自己写一个的,但是实在没时间)

总结

每一篇文章的最后,都会出现评论区。通过简单的注册:

  • 输入邮箱(不需要验证,只是用于重置账号);
  • 用户名(可以用于登陆);
  • 密码+重复一遍。

然后就可以畅所欲言。

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  
  1. Log into the Admin Control Panel of your NodeBB forum
  2. Click on the Reload button at the bottom of the main Admin page
  3. Refresh the page and open up Extended -> Plugins and activate nodebb-plugin-blog-comments
  4. Go back to General -> Dashboard and Restart NodeBB
  5. Refresh the Page
  6. Go to Installed Plugins -> Blog Comments
  7. Switch over to your Ghost theme files now
  8. Open and add the following after your {{content}} in your post.hbs file. Also, change the nbb.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.