搭建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了,此处略过。

你可能感兴趣的:(搭建Ghost博客系统)