Ghost博客坎坷安装过程

缘起

由于工作原因,原来自己开发的Marked-blog好久没有继续更新了,这也导致我的个人博客上的文章很久没有更新,所以我的文章就这么一直写在博客园上了。不过积累和总结还是要有的,这对于成长的很重要(fei hua)。

相信每个热爱互联网的同学,都希望有一个属于自己的独立博客系统,在这么一片小天地里,记录着自己点点滴滴的成长,这也是我建立这个博客的目的。

最近决定换工作了,工作暂时缓了下来,想着得把自己的博客弄一弄了,考虑到新的工作我还需要准备一些时间学习新的东西,加上女朋友那边还得给她帮帮忙,自己也没那么多空闲时间来完善原来的Marked-blog了,于是便开始了博客系统的调研。

考虑在内的博客系统有这么几个:

WordPress:这个应该是全球独立博客应用最多的了把,原来用过,感觉系统过于庞大了,不在考虑

typecho:它还是蛮招人喜欢的,简洁清新,不想WordPress那么繁琐,不过是php的,对php不大感冒,修改起来不方便,也不再考虑他了

ghost:它就是今天的主角啦,nodejs开发的,性能就不多说啦,最主要是的原生支持Markdown语法(这个我喜欢),再有就是自己也热爱nodejs,修改起来也方便(当然如果只是用来写博客也不要修改他的底层代码了)。当然ghost也有很多问题,可以到这里看看,不过对我而言,这都不用重要了,谁让他用起来这么爽呢!

坎坷的安装

nodejs玩的时间也挺长了,想想一个小小的博客系统应该很快能够搞起来,可惜事与愿违,折腾的过程中遇到好多麻烦。

安装过程一定要根据官网的说明来弄,不然会遇到很多坑的。

最好把ghost安装在Linux系统上,我用的是阿里云的Ubuntu系统,Windows没试过,应该会有更多的坑。

版本问题

因为前阵子研究ES6的特性,我用的nodejs的版本都是v0.11.x的,安装ghost的时候也没有注意这个问题,npm install的过程编译sqlite3出现了各种问题,貌似还有一些其他的包安装有问题。这里就不一一列举了,总之我们需要使用v0.10.x版本的nodejs才行。

为了让多个版本的node并存,我用了nvm来管理node。安装和使用方法也比较简单,直接根据官方文档来操作就行了。

运行报错

首次运行初始化时,提示:

Uncaught TypeError: Cannot read property 'statusCode' of undefined  

看了下和这个错误相关的代码,在ghost/core/server/models/user.js第868行附近,研究了下,原来是从www.gravatar.com获取头像的,最近各种国外的网站被墙,难免访问不上,把以下代码注释掉就可以了:

//if (response.statusCode !== 404) {
//    userData.image = gravatarUrl;
//}

以production模式运行

直接通过npm start启动ghost是以development模式启动的,线上运行的时候需要使用production模式,通过NODE_ENV=production npm start启动即可。

以服务的模式启动

使用ssh连到服务器上,直接启动ghost,如果断开ssh你会发现ghost也停了,这是由于ssh的会话被停止导致的。我们可以使用forever让ghost一直运行。

安装forever: npm install forever -g
用forever运行ghost:NODE_ENV=production forever start index.js
这次关掉ssh,ghost就不会停止了。

终于把博客折腾好了,以后可以欢乐的写博客了,顺便截图纪念一下:

ghost

2014年12月03日