2018-09-25 · Blog

Ghost 博客搭建

在几天前就开始搭建博客系统,当时选择的 Ghost ,虽然现在换成了 Wordpress 但还是记录下 Ghost 的搭建之路。

Ghost 简介

Ghost 是一套基于 Node.js 构建的开源博客平台(Open source blogging platform),具有易用的书写界面和体验。

ghost-logo

Ghost 属于动态博客,页面并不是像 Hexo, Jekyll 这类静态博客,在编译的时候会生成所有页面。Ghost 有前台和后台。后台负责写作,发布文章,系统配置,等等。

前置条件

我是使用 Cent OS 7.5.1804 来搭建的博客。

搭建时 Ghost Release 的版本为 2.1.3。

NodeJs LTS 版本为 8.x 是满足 Ghost 的需求的。

Nginx 的版本需要 1.9.5 以上。

由此我们已经知道需要安装写什么了,那就开始吧:

在开始之前先更新系统和安装好开发者工具:

sudo yum update

sudo yum groupinstall 'Development Tools' -y

NodeJS

Node.js 是用于通用编程的 JavaScript 平台,允许用户快速构建网络应用程序。通过利用前端和后端的 JavaScript,开发可以更一致,并在同一系统中进行设计。

nodejs-logo

Node 的安装还是比较简单的,直接参考 官方文档

node8_x-install

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

sudo yum -y install nodejs

Mysql/MariaDB

我选择的是安装 MariaDB 10.3 版本,具体的安装可以参考我的另一篇文章 How to install mariadb 10.3 on centos 7

这里直接创建 Database 和 User

create database ghost CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

grant all privileges on ghost.* to 'ghost'@'%' identified by 'your password' with grant option;

flush privileges;

添加用户

由于 Ghost 不能使用 root 用户进行启动,所以在此之前我们先创建好用户。
注意: 这个新用户不能命名为 ghost ,那是因为 Ghost 会自己创建一个叫 ghost 的用户,并写入一些介绍内不博文。

adduser username

password username

赋予用户 sudo 的权限

首先需要获取对 /etc/sudoers 文件的写权限

chmod -v u+w /etc/sudoers

编辑 /etc/sudoers 文件,赋予其 sudo 权限

vim /etc/sudoers

在文件中找到 root ALL=(ALL) ALL 进行如下修改

## Allow root to run any commands anywhere
root          ALL=(ALL)       ALL
username      ALL=(ALL)       ALL  # 这句是新添加的

在修改完后,为了安全起见,我们需要恢复 /etc/sudoers 文件权限

chmod -v u-w /etc/sudoers

Nginx

Nginx 的安装也可以参考我的另一篇文章 How to install Nginx on centos 7

配置 Nginx Config

创建 nginx 的 conf 文件

vim /etc/nginx/conf.d/ghost.conf

添加如下内容:

server {
    listen 80;
    server_name your server name;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

Ghost-CLI

使用 Ghost-CLI 来安装和维护博客是相当的优雅简洁的。

npm install -g ghost-cli

创建和配置 Ghost

切换到刚刚新创建的用户

su pi

mkdir ghost

cd ghost

使用 CLI 进行安装:

虽然官方文档上写的推荐 OS 是 Ubuntu 16.04,不过 CentOS 一样可以安装,只要加上 --no-stack 参数即可。

ghost install local --no-stack

配置 config.production.json 文件

{
    "url": "your url",
    "server": {
        "port": 2368,
        "host": "127.0.0.1"
    },
    "database": {
        "client": "mysql",
        "connection": {
            "host": "127.0.0.1",
            "user": "ghost",
            "password": "xxx",
            "database": "ghost"
        }
    },
    "mail": {
        "transport": "SMTP",
        "from": "xxx@qq.com",
        "options": {
            "host": "smtp.qq.com",
            "port": "465",
            "auth": {
                "user": "xxx",
                "pass": "xxx"
            }
        }
    },
    "logging": {
        "transports": [
            "file",
            "stdout"
        ]
    },
    "process": "local",
    "paths": {
        "contentPath": "xxx/ghost"
    }
}

更多更详细的配置请参考 官方文档

到此就已经安装完毕了,访问你的 url 地址,就可以开始进行博客之旅了。


参考文档

Ghost 博客搭建日记
Ghost 博客升级指南
Ghost 文档