在新安装时初始化 Ghost 数据库

Initialize Ghost database on new install

我正在尝试在 Centos 7 服务器上建立一个全新的 Ghost 博客。我安装了 Nginx、Node 和 Ghost,并编写了所有必要的配置文件。它非常接近工作,但我想使用 MySQL 而不是 SQLite,所以我创建了一个名为 "ghost_db" 的新(空白)MySQL 数据库,设置了一个 MySQL 用户调用 "ghost",授予用户数据库权限,并将这些行添加到 config.js:

    database: {
  client: 'mysql',
  connection: {
    host: 'localhost',
    user: 'ghost',
    password: 'mypassword',
    database: 'ghost_db'
    charset: 'utf8'
    filename: path.join(__dirname, '/content/data/ghost-dev.db')
  },
  debug: false
}, ...

当我尝试启动它时,出现错误提示我使用 knex-migrator 初始化数据库。

[john@a ghost]$ npm start

> ghost@1.18.4 start /var/www/ghost
> node index
[2017-12-10 00:08:00] ERROR
NAME: DatabaseIsNotOkError
CODE: MIGRATION_TABLE_IS_MISSING
MESSAGE: Please run knex-migrator init ...

然而,Stackexchange 上的一些评论表明,对于此版本的 Ghost,可能不需要使用 knex-migrate,而当我 运行 knex-migrator 时,它也失败了:

[john@a ghost]$ knex-migrator init
[2017-12-09 16:21:33] ERROR

NAME: RollbackError
CODE: SQLITE_ERROR
MESSAGE: delete from "migrations" where "name" = '2-create-fixtures.js' and "version" = 'init' and "currentVersion" = '1.18' - SQLITE_ERROR: no such table: migrations
...[omitted] 
Error: SQLITE_ERROR: no such table: migrations

我认为问题可能出在我最初创建的 "ghost_db" 数据库是空白的。 config.js 中指向的 "ghost-dev.db" 文件似乎是用于 SQLite 的,但是如果我将 config.js 切换回使用 SQLite 数据库,我会收到相同的错误消息。我不知道 "migrations" table 是什么。我在 [https://github.com/TryGhost/Ghost/blob/1.16.2/core/server/data/schema/schema.js] 处找到了我认为 Ghost 期望的架构,但我不确定如何使用它来初始化 tables 等,除非手动非常费力地进行。我被难住了!

我采用了另一种被证明是成功的方法,即将 Ghost 安装为 NPM 模块。官方的 Ghost 说明将此标记为 "advanced" 进程,但遵循 HugeServer 知识库中出色的 nehalist.io and Stickleback blogs. There was also some useful guidance 中的说明并不难。我认为最终的问题是 Ghost 命令行界面 (ghost-cli) 不是为 Centos 7 设计的。

Knex-migrator 是 Ghost 1.0 中的新增功能,它也使用 config.<env>.json 文件进行配置。

听起来您将数据库配置添加到名为 config.js 的文件中,该文件正确 <1.0,但您似乎正在安装 Ghost 1.0,因此您的新连接详细信息需要存在于 config.production.json

你说得对,Ghost-CLI 不适用于 CentOS(它适用于 Ubuntu),但如果它未能正确安装 Ghost,我会感到非常惊讶。其他操作系统的问题主要在于 systemd 之间的细微差别,即保留 Ghost 运行.

我的答案是根本不创建数据库,让 Ghost 作为 ghost install 的一部分来创建数据库。