这次搭建博客采用了Ghost,在搭建之前,也做了很多的选择,开始的考虑是基于是否要自己搭建还是直接选择其他的平台,比如:简书,Gitbooks等。
简书的风格,我其实比较喜欢。但是总觉得在第三方平台上写,限制多多,也不利于自己做SEO推广。然后考虑了第二种方案就是Gitbooks,但是看了一些文章,觉得搭建还是有点麻烦,反正我看的是有点晕。索性还是自己搭建一个吧。
搭建Ghost相对还是比较简单的,大概准备几样东西:
- 准备一个域名(当然如果准备部署在国内服务器,域名要备案)
- 买一台服务器,当然首选还是推荐阿里云(此处不是广告,因为阿里云没有给我1毛钱)
- 下载Ghost源码,我是直接在官网下载的英文版,我看到国内有中文版,但是好像不是官方维护,所以我担心版本更新要比官方延迟。
- 安装部署,此处网上教程很多,也非常简单。
安装完毕后,可以自己写两个shell文件,这样停止和启动服务相对比较方便,因为每次记启动,停止命令也挺费脑子的。
#!/bin/bash
NODE_ENV=production forever start /var/www/ghost/index.js
#!/bin/bash
forever stop /var/www/ghost/index.js
安装完毕,记得使用forver方式启动,就是启动后台守护进程,否则,关闭控制台,服务就关闭了。
安装完毕之后,默认的主题其实还是比较简洁的。但是有一个问题我无法接受啊,就是导航无法接受啊。于是开始找主题,google一搜,还挺多的,但是大部分多还是觉得有点花哨,看多了容易腻,后来找到了目前的主题,基本还是比较简单的。已经满足我的要求,部分满足不了的,只好自己动手改代码了。
我目前自己定制后的主题下载地址:
https://github.com/kaintao/ghost-rjkf
我使用的原作者的主题地址:
https://github.com/wbkd/ghost-wbkd
安装过程
$ cd path-to-ghost/content/themes
$ git clone https://github.com/wbkd/ghost-wbkd.git
上面两行命令的意思就是通过git把主题下载下来,搞不明白的,很简单,直接通过迅雷什么的,把上面的文件下载下来就就行,一样的。
然后将目录放到ghost的目录中,/项目目录/content/themes/ 下就行了,然后登录ghost的后台,主题管理里就可以看到了,启用,刷新就可以看到新主题了。
安装完毕后,首先我要修改下日期格式,因为主题是外国友人写的,所以日期显示格式,是他们的格式。不太符合国人的阅读习惯,所以找到对应的文件,其实主要就是一个列表页和一个详情页需要修改日期格式。
主题模板中,找到:
page.hbs //列表页
post.hbs //详情页
这两个文件,然后用编辑器打开,就看到到日期了
<header class="post-header">
<h1 class="post-title">{{title}}</h1>
<section class="post-meta">
<time class="post-date" datetime="{{date format='YYYY-MM-DD'}}">{{date format="DD MMMM YYYY"}}</time>
<span class="author">by {{author}}</span>
</section>
</header>
按我原有的开发经验,如果要显示比如:2016-09-20 那语法就是:yyyy-MM-dd 但是改完之后,发现并没有得到预期的结果,于是查阅资料,发现ghost是使用moment.js来格式化日期
YYYY 2014 4 or 2 digit year
YY 14 2 digit year
Y -25 Year with any number of digits and sign
Q 1..4 Quarter of year. Sets month to first month in quarter.
M MM 1..12 Month number
MMM MMMM Jan..December Month name in locale set by moment.locale()
D DD 1..31 Day of month
Do 1st..31st Day of month with ordinal
DDD DDDD 1..365 Day of year
所以,我们如想显示2016-09-20这种格式,就需要写成:YYYY-MM-D
修改时,只需要修改:
<time class="post-date" datetime="{{date format='YYYY-MM-DD'}}">{{date format="YYYY-MM-D"}}</time>
改完之后,重启就可以了。