前言

大概用了接近三年的WordPress博客平台,因为诸多原因放弃了它,目前看好的依然是Ghost平台,现在版本已经更新到Version 2,本地测试下的确不错,所以写下这篇文章。

由于Version 2还没好很好的解决从WordPress过渡,所以我放弃原来的文章转移并且转移到Hexo博客上。目前博客当作新博客来写作吧。

本文在2019.05.25更新,更新部分安装方法。

安装Node.js环境

目前主机配置是腾讯云低配机:1 CPU/1G RAM/1Mbps/40G ROM,系统是Ubuntu 16。Ghost博客需要在Ubuntu系统Node.js环境下运行,查看Ghost文档有了自己脚手架:Ghost-Cli,所以很大的程度上比之前方便多了。

nvm是一个nodejs版本管理的工具,为什么需要nvm?nodejs版本迭代很快,而且转移包依赖很麻烦,总之nvm解决很对版本问题。具体可以查看Github的说明:nvm

由于Ghost不允许root安装,所以需要新建一个普通的账户:

adduser <user> # ghost不允许root用户安装,所以需要新建个<user>用户
usermod -aG sudo <user> # 给予<user>用户为超级权限
su - <user> # 登录用户
 
sudo apt update
sudo apt upgrade # 更新软件

这里的<user>用户名可以自己任意修改,例如jaxsonubuntu等。

但请不要使用ghost作为用户名,因为和ghost-cli用户名产生冲突。

下面内容过时,请跳到下一阶段内容查看安装方法!!

安装NVM Node.js 版本控制

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc #生效配置
nvm --version #出现版本号则安装成功

使用方法文档,根据文档我们需要进行一系列特定的配置并且按照Nodejs:

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node #设置nodejs二进制文件镜像点为阿里淘宝镜像
source ~/.bashrc
nvm install 8.12.0 64 #安装版本8.12.0的64位版本
nvm use 8.12.0 #使用该版本
node -v
npm config set registry https://registry.npm.taobao.org #npm镜像替换为淘宝npm节点
npm config get registry #配置后可通过下面方式来验证是否成功
 
nvm install 8.12.0 --reinstall-packages-from = 8.11.0 #升级8.12.0版本并且将8.11.0依赖文件迁移过去

2019.05.25更新:

安装Node.js没有上面那么麻烦,直接执行下面命令就行了:

# 添加 Nodejs 10 源
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash
 
# 安装 Node.js
sudo apt-get install -y nodejs

国内的机器安装可能比较慢,因为不可描述的原因导致的,如果着急的话可以试试上面的老方法。

设置Nodejs镜像源(非中国大陆机器不用设置):

npm config set registry https://registry.npm.taobao.org #npm镜像替换为淘宝npm节点
npm config get registry #配置后可通过下面方式来验证是否成功

安装Nginx环境

如果你需要SSL配置需要NGINX 1.9.5或更高版本,当然你可以选择下载Nginx源码进行编译安装,省事可以直接执行:

sudo apt-get install nginx
nginx -v # 输出版本号

如果ufw已激活,则防火墙允许HTTP和HTTPS连接,所以打开防火墙:

sudo ufw allow 'Nginx Full'

安装数据库

Ghost安装数据库推荐的是MySQL:

sudo apt install mysql-server

如果运行的是Ubuntu 18.04,则需要输入密码以确保MySQL与Ghost-CLI兼容:

# 进入数据库管理
sudo mysql
 
# 执行下列语句进行修改数据库密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '这是你要替换的密码';
 
# 退出数据库管理
quit;
 
# 退出mysql用户并且登录用户账户
su - <user>

在这里我个人不推荐MySQL,推荐一个比MySQL更轻量级的数据库:MariaDB,更多特性搜索了解。

根据系统版本安装:MariaDB Ubuntu指导安装

例如Ubuntu 18.04安装10.3版本的数据库:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.shu.edu.cn/mariadb/repo/10.3/ubuntu bionic main'
sudo apt update
sudo apt install mariadb-server

安装过程中会让你输入数据库密码,请根据自身情况输入即可。

安装Ghost-Cli & Ghost

sudo npm install ghost-cli@latest -g # 安装Ghost脚手架

创建网站目录:

# 创建ghost文件夹的网站目录,这个名字可以自己随便定义
sudo mkdir -p /var/www/ghost
 
# 使文件夹拥有权限,<user>是当前用户名
# 例如当前用户名是ubuntu,那么应该是:sudo chown ubuntu:ubuntu /var/www/ghost
sudo chown <user>:<user> /var/www/ghost
 
# 设置读写权限
sudo chmod 775 /var/www/ghost
 
# 定位
cd /var/www/ghost
 
# 进行Ghost博客平台安装
ghost install

安装过程根据主机性能来决定,下面是选项配置讲解:

  • Enter your blog URL: 博客展示地址,格式:http(s):(www.)example.com,不支持ip地址。
  • Enter your MySQL hostname: 数据库主机地址,回车默认是localhost
  • Enter your MySQL username: / Enter your MySQL password: 数据库用户名/密码,上面安装的数据库用户名是root,密码是自己设置的。
  • Enter your Ghost database name: Ghost博客数据库名
  • Do you wish to set up "ghost" mysql user? 设置数据库用户名为ghost,这个为了避免权限太大导致数据瞎搞,Ghost官方推荐是y
  • Do you wish to set up Nginx? 自动化Nginx,推荐y
  • Do you wish to set up SSL? 配置SSL证书,推荐y,如果你有证书问题,请查看文章最下面的问题。
  • Enter your email (For SSL Certificate):个人邮箱,配置ssl证书需要的邮箱地址。
  • Do you wish to set up Systemd? 使用ghost进程管理工具,推荐y,个人觉得海星。
  • Do you want to start Ghost? 启动Ghost博客就可以进入网址访问。

图片优化

图床使用的是Ghost qiniu图床:https://github.com/minwe/qn-store

例如在/var/www/ghost/content/adapters文件下新建个storage文件夹

cd /var/www/ghost/content/adapters/storage # 定位
git clone https://github.com/Minwe/qn-store.git # 拉取源码
cd qn-store # 定位
npm install # 安装模块依赖

然后打开/var/www/ghost/config.production.json文件,添加代码:

{
  // ...
  "storage": {
    "active": "qn-store",
    "qn-store": {
      "accessKey": "your access key", // https://portal.qiniu.com/user/key获取AK密匙
      "secretKey": "your secret key", // https://portal.qiniu.com/user/key获取SK密匙
      "bucket": "your bucket name", // 存储对象空间名字
      "origin": "http://xx.xx.xx.glb.clouddn.com", // 七牛CDN地址
      "fileKey": {
        "safeString": true,
        "prefix": "YYYYMM/"
      }
    }
  }
  // ...
}

然后重启Ghost:

cd /var/www/ghost
ghost restart

SSL错误

如果你域名设置@域名例如:https://iiong.com,访问是没有问题,但如果是访问www.iiong.com就会报错,如何解决这个问题呢:

  • 重新配置:ghost config url https://www.mydomain.com

  • 执行ghost setup nginx ssl

  • 再修改回来:ghost config url https://mydomain.com

  • 打开/var/www/ghost/system/files/下的俩个www.*.conf文件,添加301跳转到顶级域名代码:

    if ($ssl_protocol = "") {
            return 301 https://$host$request_uri;
        }
        if ($host != iiong.com) {
            return 301 $scheme://iiong.com$request_uri; #请注意这里的iiong.com替换你的域名。
        }
    
  • 重启sudo nginx -s reload服务