另类的 Ghost 2.x 安装教程

本文是在「极度讨厌 ghost-cli 保姆式的安装程序」前提下写成。

从 Ghost 1.0 开始,官方指定了 ghost-cli 作为指定的安装程序,这个脚手架看似很方便,实际上极大地限制了运维拼装组件的自由,并且自作聪明地禁止了 root 账户运行、限制高版本 Node.JS 依赖等。

本文介绍一种另类的安装方案,完全避开 ghost-cli 这个毒瘤。

0. 环境准备

本文选择 ubuntu 18.04.1 LTS 作为实验环境,安装了 MySQL 作为数据库储存.
由于 Ghost 对 Node.JS 极度挑剔,建议使用 nvm 作为 node 版本管理工具。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
nvm install node
nvm install 8.9.0

然后安装 yarn 作为依赖管理工具

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt update && apt install yarn

1. 拉取源码

首先创建一个文件夹,存放 ghost 相关文件

mkdir -p /data/wwwroot/i-meto.com
cd /data/wwwroot/i-meto.com

使用 yarn 初始化目录

yarn init

拉取最新版本的 ghost

yarn add [email protected] --save

2. 创建配置文件

从项目目录下拉取默认配置文件

cp node_modules/ghost/core/server/config/env/config.development.json config.production.json

然后对文件做一些修改(不含注释)

{
    "url": "https://i-meto.com",
    "server": {
        "host":"127.0.0.1",
        "port": 2369
    },
    "database": {
        "client": "mysql", // 这里可以保持 SQLite3 不变
        "connection": {
            "host"     : "127.0.0.1",
            "user"     : "root",
            "password" : "root",
            "database" : "ghost"
        }
    },
    "paths": {
        "contentPath": "content" // 注意这里去掉末尾的 '/'
    },
    "logging": {
        "level": "info",
        "rotation": {
            "enabled": true
        },
        "transports": ["file", "stdout"]
    }
}

复制储存目录

cp -r node_modules/ghost/content ./

3. 创建启动入口

在目录下新建 index.js 文件,内容如下

var ghost = require('ghost')
var path = require('path')

ghost().then(function (ghostServer) {
    ghostServer.start()
})

4. 初始化数据库

使用官方提供的合并工具

yarn global add knex-migrator
NODE_ENV=production knex-migrator init --mgpath node_modules/ghost

5. 启动博客

在目录下执行命令启动

NODE_ENV=production node index.js

6. PM2 守护 (可选)

yarn global add pm2
NODE_ENV=production pm2 start index.js --name i-meto.com

7. Caddy

为了方便部署,这里不用 Nginx 而改用 Caddy,配置文件如下

i-meto.com:443 {

    gzip
    tls [email protected]

    proxy / localhost:2369 {
        transparent
    }
}

8. 又拍云储存 (可选)

步骤详见 https://github.com/pupboss/ghost-upyun-store

这里安装完毕后需要多加一步,创建一个软链接,否则无法正常启动

ln -s /data/wwwroot/i-meto.com/content/adapters/storage/ghost-upyun-store /data/wwwroot/i-meto.com/node_modules/ghost/core/server/adapters/storage/ghost-upyun-store

参考资料


本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可
本文链接:https://i-meto.com/deploy-ghost-without-cli/