用Ghost搭建自己的博客

本人最近在学习Java以及Spring框架,为了让自己开发的小网站能跑在云端,于是就在阿里云上买了台与服务器以及域名,买了之后好像用的也不多,觉得挺浪费的,于是就想到了在云服务器上搭建一个博客,用来记录自己平时学习或工作中遇到的问题及心得,我不奢求这个博客能够多么火爆,但如果这个上面的信息能够帮助到有需要的人,我还是非常开心的(好像扯远了~)。

网上的博客系统很多,比如WordPressJekyll以及号称千年老二的Z-Blog等,基于这些博客系统搭建博客“据说”简单容易上手,但对于我这种既不懂PHP又不懂ASP的人来说,只能对这些博客系统望而怯步了。

偶然在网上看到这个博客,觉得非常漂亮,然后仔细看了一眼发现使用Ghost这个博客系统搭建的。这个博客系统是基于Node.js的,它的标语是Just a blogging platform,从它的标语可以看出它是一个轻量级的博客系统。由于我之前多多少少接触过Node.js的开发,于是就开始了此次博客的搭建工作。

废话不多说,下面直接进入正题。

Ghost下载及配置

Ghost的是开源的,直接可以官网上下载Ghost源码,然后可以根据官方教程进行Ghost的安装,安装之后,需要对Ghost进行一些配置,配置文件在Ghost根目录下的config.js中,这个配置主要包括URL,mail,database以及server的配置。

URL

url是指外网访问你的博客需要的一个工友的url,比如我的博客的url是http://blog.insanecoder.top ,这个url主要用在页面中的链接,如果不配置的话页面上的链接可能会直到错误的地址上。

mail

这个配置过程留给有需要的同学们去研究吧,因为博主我暂时不需要,所以就没有去进一步研究,mail配置传送门

database

ghost默认使用sqllite作为存储数据的数据库,sqllite是一个轻量级数据库系统,做过Android的同学应该会很熟悉,如果你想把数据库换成MySQL,可以作如下配置:

database: {  
    client: 'mysql',
    connection: {
        host     : 'urlofmysql',
        user     : 'yourusername',
        password : 'yourpassword',
        database : 'blogdatabase',
        charset  : 'utf8'
    }
},

需要注意的是,博客的数据库需要自己手动创建,否则启动ghost的时候会报错。 如果懒得折腾数据库这块,这块可以直接用默认的配置。

server

server的配置主要就是配置ghost服务需要监听的host以及port,默认的配置如下,如果没有特殊需求,直接用默认的就可以,默认的配置如下:

server: {  
    host: '127.0.0.1',
    port: '2368'
}

这里稍微提醒一下,如果用的阿里云,需要在控制台的安全组中把相应的端口号打开,这样才能正常从外面访问你的博客。

这些都配置完成之后,直接在根目录下启动ghost server就可以通过外网访问你的博客了:

npm start index.js  

修改主题

选择Ghost还有一个重要的原因是这个博客系统确实有很多主题供我们选择,官方主题仓库,这些主题仓库有收费的也有免费的,看大家需要,可以自行选择,我这里选择了vno for Ghost这个主题,下载好主题之后,把这个主题copy到content/themes文件夹下

git clone https://github.com/onevcat/vno.git  
cp vno [yourghostpath]/content/themes  

然后打开ghost的设置页面,进入General设置,这时候可能会首先提示你注册,按照要求注册即可。

[yourblogurl]/ghost/setup

打开之后,会发现这里除了能设置主题以外,还可以设置头像,封面等等。

Nginx

Ghost的默认端口为2368,这样你在访问你的网站的时候必须在你的url后面加上端口号,另外一点就是你还需要修改防火墙配置,这样也带来了一定程度的安全隐患。所以一般需要把端口改为80,但是我的服务器上80端口号已经被Tomcat占用了,这个时候就不得用到Nginx的反向代理功能了。
首先从官网上下载nginx的安装包

wget https://nginx.org/download/nginx-1.10.1.tar.gz  

然后编译安装,安装的过程中可能需要PCREzlib依赖库,只需要在进行configure的时候加上相应的编译选项就可以解决了。

./configure --with-pcre=PCREPATH --with-zlib=ZLIBPATH
make  
make install  

最后进行反向代理配置,这里我只贴出来对博客部分的关键代理配置,供各位同学参考

server {  
    listen          80;
    server_name     blog.insanecoder.top;

    location / {
        proxy_pass http://localhost:2368;
        proxy_read_timeout 3600s;
        proxy_http_version 1.1;
    }
}

配置思路其实很简单,就是监听blog.insanecoder.top:80,如果有请求过来的话,反向代理值http://localhost:2368 的url上,因为我们的Ghost博客系统就是配置的这个url。 这里多说一句,nginx作为是反向代理和负载均衡强大的工具,我这里只是用了其最最简单的功能,更多功能还待各位同学自己去发掘~

添加评论系统

我之前看书学习包括工作所有的笔记或心得都会写在印象笔记上,不得不说这个笔记还是很好用的,之所以想搭建这个博客是因为想把自己的想法分享出来,所以给博客添加评论系统就很有必要了。Ghost是一个轻量级博客系统,自身没有评论的功能,必须要借助第三方的评论插件,常用的国外的有DISQUS,但是需要用google等国外账号登录才能评论,就没有使用,国内也有一个类似功能的评论插件,叫多说,功能跟DISQUS基本一样,而且集成方便,还可以用国内的主流社交账号比如 qq,微信,微博等进行登录,方便国内使用,所以我选择了多说作为我的评论系统。下面简单说一下流程(其实本来就很简单)
首先按照要求进行多说账号的注册,注册之后会自动跳转至后台管理界面,这个界面会帮你自动生成一个js代码,你要做的就是把这段代码嵌入到需要评论的界面,js代码如下:

<!-- 多说评论框 start -->  
<div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>  
<!-- 多说评论框 end -->  
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->  
<script type="text/javascript">  
var duoshuoQuery = {short_name:"insanecoder"};  
    (function() {
        var ds = document.createElement('script');
        ds.type = 'text/javascript';ds.async = true;
        ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
        ds.charset = 'UTF-8';
        (document.getElementsByTagName('head')[0] 
         || document.getElementsByTagName('body')[0]).appendChild(ds);
    })();
</script>  
<!-- 多说公共JS代码 end -->  

拿到这段代码后,进入content/themes路径选择你当前的theme,在partials新建comments-duoshuo.hbs文件,把这段程序复制进去,然后把需要修改的那一行改为:

<div class="ds-thread" data-thread-key="{{slug}}" data-title="{{title}}" data-url="{{url absolute='true'}}"></div>  

最后在当前的theme中的post.hbs中的末尾({{/post}})之前添加如下代码即可完成评论系统的添加

{{> comments-duoshuo}}

至此,就可以拥有一个属于自己的博客了,再也不用玩单机版的笔记了~

Shaohang Zhao

Read more posts by this author.