搭建Ghost博客系统

写在前面的话

很早就想搞个博客,最近有朋友跟我安利使用GHOST博客来创建个人博客。本周末正好有空,就开始动手整了。

没想到,开始上手做之后,才发现GHOST官网给的教程有一堆坑。

原本计划两个小时搞定博客安装并对外的,愣是搞了一个晚上。目前网站终于鼓捣出来,能够正常访问了。

趁现在,把那些填过的坑记录下。以便后来者能躲过去。

本次安装大致参考如下文章,在此感谢作者。

http://docs.ghostchina.com/zh/installation/linux/

我的网站用Ghost博客作为应用服务,使用nginx在前端做一层隔离,也方便以后再继续扩展。数据存储采用了mysql。

故在正式开始安装GHOST之前,首先要准备好nginx和mysql。

因为Ghost博客是使用nodejs开发的,所以最开始需要安装nodejs相关的环境。

上述三个软件的具体安装过程网上已有很多教程,在此不赘述。

 开始安装Ghost:

把基础软件装好后,现在就参照上文开始安装Ghost博客。

1. 首先是把ghost博客的最新的包下载下来:

curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

2. 解压到一个目录里面

unzip -uo ghost.zip -d ghost

注:使用的服务器上可能并没有安装unzip服务,那要切到有权限的用户下,把unzip装一下。

3. 转到刚刚解压的目录

cd /你的 Ghost 解压目录

4. 安装Ghost

npm install --production

至此,一切正常。

按照上文博客的说明,此刻,只需启用Ghost博客的服务即可,然而,当我输入 npm start的时候,开始报错了。。

对呀,还没配置数据库信息呢,当然不能启动起来了。可是怎么配置数据库呀?文章没有说。

于是搜索了下,网上有文章说在ghost程序目录下有config.example.js,可在此配置数据库相关信息。

然而,我的目录结构下面根本就没有这个文件,find全工程也没有这个文件名的文件。

那么,这个配置文件在哪里呢?回去看了下启动过程,发现程序有从ghost目录/core/server/conf加载文件。

于是顺藤摸瓜,果然,在ghost目录/core/server/conf/env下面找到了如下几个conf文件:

config.development.json 

config.production.json 

config.testing.json 

config.testing-mysql.json

5. 修改数据库配置信息

先改config.development.json

原来的文件长这样,在开发模式下,ghost使用了sqlite作为他的数据库,但是我使用的是mysql。

故需要修改"database"节点内容。

{

    "url": "http://localhost:2368",

    "database": {

        "client": "sqlite3",

        "connection": {

            "filename": "content/data/ghost-dev.db"

        },

        "debug": false

    },

    "paths": {

        "contentPath": "content/"

    },

    "privacy": {

        "useRpcPing": false,

        "useUpdateCheck": true

    },

    "useMinFiles": false,

    "caching": {

        "theme": {

            "maxAge": 0

        },

        "admin": {

            "maxAge": 0

        }

    }

}

修改后的文件是这样子的,"database"节点内为修改过的内容:

{

    "url": "http://localhost:2368",

    "database": {

        "client": "mysql",

        "connection": {

            "host": "127.0.0.1",

            "user": "yourdbuser",

            "password": "yourdbpassword",

            "database": "yourdatabase",

            "charset":  "utf8"

        },

        "debug": false

    },

    "paths": {

        "contentPath": "content/"

    },

    "privacy": {

        "useRpcPing": false,

        "useUpdateCheck": true

    },

    "useMinFiles": false,

    "caching": {

        "theme": {

            "maxAge": 0

        },

        "admin": {

            "maxAge": 0

        }

    }

}

按同样的逻辑,修改config.production.json,至此,数据库配置就修改好了。

修改好数据库配置,我马上再次运行npm start,可惜,仍然报错了。

报错信息如下:

NAME:DatabaseIsNotOkError

CODE:MIGRATION_TABLE_IS_MISSING

MESSAGE:Please run knex-migrator init

其实这报错是因为数据库没初始化,该有的表呀什么的都没有建,所以应用启动不起来。

6. 数据库初始化

阅读报错信息后,我决定先跑一边knex-migrator init。

第一遍果然失败了,因为我都没装knex-migrator,于是搜索了,跑了下如下命令:

npm install -g knex-migrator

把knex-migrator 装上了。然后回到ghost安装目录,执行数据库初始化。

cd  yourpathtoghostfolder

knex-migrator init

OK。显示了一堆的create table等信息,终于把数据库初始化好了。

此刻再运行npm start,终于把网站起起来了。

npm start

npm start是在development模式下启动应用。

按照以往部署的经验,production数据配置已经配置好了,应该可以启动production模式了。

于是我执行如下命令,企图在production模式下启动博客,然而,失败了。

npm start --production

又报这个错,

NAME:DatabaseIsNotOkError

刚刚不是刚刚初始化过吗,怎么又不行了呢?

我赶紧登上Mysql上去看看。这一看是吓我一跳,development db上的库表都建好了。

但是,productiondb上的没有建好!!!

哎,原来这个knexi-migrator init 只给我初始化了development 数据库。

刚开始我试图搜索方案让knexi-migrator直接帮我把开发库和生产库初始化了,左试试右试试,最终还是没解决。

最后没法,我只能把produciton库的库表信息写到config.development.json里面,再跑一次knex-migrator init。

初始化表之后,再跑一次npm start --production,终于把production模式的博客也启动起来了。至此,博客安装完成。

npm start --production

后面就是配置nginx了,此处略过。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342