使用Ghost-CLI安装Ghost1.x博客

Ghost 是一个现代化的,开源的,基于 Node.js 的博客发布平台,它的前端管理系统基于 Ember.js, 后端的模板引擎采用的 handlebars, 而默认数据库是 s、Sqlite3 或 MySQL,当然,你也可以使用其他类型的数据库。

Ghost Blog 介绍:

Ghost 是基于 Node.js 的开源博客平台,由前 WordPress UI 部门主管 John O’Nolan 和 WordPress 高级工程师(女) Hannah Wolfe 创立,目的是为了给用户提供一种更加纯粹的内容写作与发布平台。

先前提要:

本人安装的环境为:PHP+Apache+Nginx+Mysql+Node.js
安装的工具为:Yarn+RPM+Ghost-CLI
需要注意:**官方 Ghost Blog 提议最少 VPS 需要 1G 运存,建议设置 SWAP**

参考文章:

ghost 官方-Install & Setup (production)
ghost 官方-install
Yarn global
CentOS 7 安装配置 Ghost v1.x
Ubuntu16.04 安装 Ghost
Ghost 使用指南
Ghost 中文网

你的准备

**

准备要素

  • CentOS 7.3 64 位===官方推荐:Ubuntu
  • 默认数据库(Sqlite3)===笔者推荐:MYSQL
  • Nginx 1.14.0
  • Apache 2.4
  • Node.js7===Ghost 支持的 Node.js 的版本为 v8.9+, v6.9+, v4.5+
  • 服务器至少 1GB 内存(可以使用 Swap)
  • 需要一个非 root 的全权账号
  • Yarn 1.7.0
  • Ghost-CLI 1.8.1

这里介绍下两样东西 Yarm 以及 Ghost-CLI

Yarm

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

Yarn 是一个依赖管理工具。它能够管理你的代码,并与全世界的开发者分享代码。Yarn 是高效、安全和可靠的,你完全可以安心使用。

Yarn 能够让你使用其他开发者开发的代码,让你更容易的开发软件。如果你在使用中发现任何问题,欢迎发 issue 或者贡献代码,一旦问题被修复,你就可以继续使用 Yarn 战斗了。
代码是通过包(有时也被称为模块)进行共享的。 在每一个包中包含了所有需要共享的代码,另外还定义了一个 package.json 文件,用来描述这个包。

特色:简单来说比 RPM/NPM 安装东西快捷多了

Ghost-CLI

Ghost CLI 项目的目标是为不想使用 Ghost(Pro)的人尽可能简单地设置和维护 Ghost 站点。

Ghost-CLI 针对的是那些在命令行环境中感觉舒适的人,因此会有一些技术知识。Ghost CLI 的设计目标是通过单一命令安装或更新 Ghost。

为了使这些目标能够通过 Ghost 的小团队获得和维护,我们推荐 Ghost-CLI 使用的推荐系统栈以及最少的配置选项。

特色:

  1. 快捷安装
  2. 自动配置
  3. 快速启动/停止/重启/再配置 Ghost
  4. 版本升级
  5. 自检错误

配置内存

内存问题是首要问题,若你的服务器剩余内存使用量>1000M 请跳过这步骤!

这里 VPS 可以通过探针来查看内存占用情况
云服务器通过自家云端查看内存占用情况

若您的 Ubuntu 服务器运存不太理想,可以查看这篇文章:https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

物理拓展

如果可以用钱解决的问题那不是问题。

免费的 Swap 拓展

Swap 分区的用处是当物理内存不够用的时候,系统会把数据放到 swap 中,所以 swap 起到了一个虚拟内存的作用。Ghost 需要至少 1GB 物理内存,否则会报错,可以通过设置 swap 分区解决

1.查看主机物理内存和虚拟内存:

free

2.在 /var/swap 创建 1024k 个 1k 大小的空文件:

dd if=/dev/zero of=/var/swap bs=1k count=1024k

3.创建 swap 分区:

mkswap /var/swap

4.启用 swap 分区:

swapon /var/swap

5.写入分区信息:

echo '/var/swap swap swap default 0 0' >> /etc/fstab

6.再次查看 Swap 分区大小:

free
or
探针/云服务器 plug-in

配置 Node.js

先上个两个指令检验是否安装和加载
node -v

which node

  1. 第一个是查看版本号
  2. 第二个是查看安装配置位置,其他软件也是类似(exp. which tomcat)

全新安装的情况下,有很多方法 wegt/npm 不等,选择自己喜欢

下载 Node.js

curl --silent --location [https://rpm.nodesource.com/setup_8.x](https://rpm.nodesource.com/setup_8.x) | bash -

安装 Node.js

yum install -y nodejs

测试是否安装成功

惯例
node -v


建议一步到位 8.9+

前提你拥有 node.js
安装依赖的 N 模块
npm install -g n

升级 node.js 到最新稳定版或者指定版本

n stable
or 我正在使用的版本
n v8.11.1

!注意:

Node.js 需要安装在系统路径,比如 /usr/bin/node 或者 /usr/local/bin/node 等。不推荐使用 nvm 来管理 node.js,nvm 会把 node.js 安装在 /root 或者 /home 等用户路径,之后你还需要链接等等操作
_

配置 Yarn

1.在 CentOS、Fedora 和 RHEL 操作系统中,你可以通过我们的 RPM 包仓库来安装 Yarn。

sudo wget [https://dl.yarnpkg.com/rpm/yarn.repo](https://dl.yarnpkg.com/rpm/yarn.repo) -O /etc/yum.repos.d/yarn.repo

2.执行安装

sudo yum install yarn

3.测试是否安装成功

yarn --version

4.查看 Yarn 使用的源

yarn config get registry

5.如果不是 taobao 或者 cnpm 的源,推荐阿里巴巴

yarn config set registry [https://registry.npm.taobao.org/](https://registry.npm.taobao.org/)

6.检查 Yarn 全局的 bin 路径

yarn global bin


!注意:

一定要检查是否在/usr/local/bin 里面否则需要$PATH 和更改全局 bin 路径因为必需确保 Yarn 的全局 bin 路径在一个公共的位置,因为之后的操作 ghost 不能使用 root 账号,需要另开一个账号,权限问题值得注意。因为必需确保 Yarn 的全局 bin 路径在一个公共的位置,因为之后的操作 ghost 不能使用 root 账号,需要另开一个账号,权限问题值得注意。

修改 Yarn 全局的 bin 路径

比如要将路径改到 /usr/local/bin 位置:

yarn config set prefix /usr/local

再次查看 Yarn 全局的 bin 路径:

yarn global bin

安装数据库和 Nginx

1.查看 MySQL 版本

mysqld -V

2.查看 MySQL 服务

systemctl is-active mysqld

如何安装 mysql 请自行 bing


1.查看 Nginx 版本

nginx -v

2.检查 Nginx 服务是否正在运行

systemctl is-active nginx

如何安装 nginx 请自行 bing

  • 值得注意的是:我们在配置 Nginx 的时候,如果是二级域名记得需要 DNS 如果用了加速记得 CDN/DNS 要结合好。同时在调教 Nginx 时候,做伪静态化和防盗链不要指向单一 index.php/index.html 以及 JS 文件/CSS 文件/PNG 图片等文件是死亡周期等要配置好,这里做一个提醒后续会补充说明到。

_

安装 Ghost-CLI

1.使用 Yarn 全局安装

yarn global add ghost-cli

2.查看安装的 ghost-cli 版本并证实是否成功安装

ghost -v

配置新角色

创建一个新的用户以解决安装 ghost blog 的要求,如果你拥有非 root 账号可以跳过。


1.创建新用户

adduser kaiccomic

kaiccomic 是我建立起的新账户名字

2.设置用户密码

passwd kaiccomic

密码要求:

  • 不可以与用户名一致
  • 不可以低于 8 位
  • 不可以存在于非安全的数据字典密码

输入两遍用户密码后进行第三步

3.更改 sudoers 超级权限文件的只读权限

chmod -v u+w /etc/sudoers

4.编辑

vi /etc/sudoers

然后找到这一行

Next comes the main part: which users can run what software on

which machines (the sudoers file can be shared between multiple

systems).

Syntax:

user    MACHINE=COMMANDS

The COMMANDS section may have other options added to it.

Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

1
2
3
4
5
6
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

在 root ALL=(ALL) ALL 下加入

kaiccomic ALL=(ALL) NOPASSWD:ALL

修改完毕后
键盘按下“ESC”键入,结束修改
并且输入
:wq保存并退出
OR
:q!强制关闭并退出

5.保存退出,并恢复 sudoers 超级权限文件的只读文件权限

chmod -v u-w /etc/sudoers

以防攻击

6.切换用户身份

su root

一键安装 Ghost

至此,我们已经完成了百分之 90 安装进度了,剩下就是一键安装类似脚本一样的安装方式了。


1.新建网站根目录

mkdir -p /data/wwwroot/blog.xxx.com

2.赋予该文件夹指定用户操作权限

chown kaiccomic:kaiccomic /data/wwwroot/blog.xxx.com

3.更改该文件夹权限

chmod 775 /data/wwwroot/blog.xxx.com

4.进入该文件夹

cd /data/wwwroot/blog.xxx.com

5.切换非 root 用户


这里开始正式安装 Ghost,这里提供两种方式安装。

第一种安装方法:

默认使用 Sqlite3 作为数据库安装指令

ghost install --no-stack --db sqlite3

enter 回车便开始自检安装环境

1
2
3
4
5
6
7
8
9
✔ Checking system Node.js version
✔ Checking logged in user
✔ Checking current folder permissions
ℹ Checking operating system compatibility [skipped]
✔ Checking memory availability
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v1.24.5
✔ Finishing install process

若自检发现
出现 X 叉号即为问题所在,问题会以 message+error 文件形式供大家查看,纯英文很容易得出解决方法
出现 Shipped 则为跳过此步骤,大多表示建议性或不重要的注意性
看不懂英文可以翻译

完成自检无错误后开始操作

  • 第一操作步骤
    Enter your blog URL?
    输入您的博客 URL 地址,这里输入 http/https 都可以
    [https://blog.xxx.com](https://blog.xxx.com)
    Enter 回车
  • 第二操作步骤
    Do you wish to set up Nginx
    是否自动配置 Nginx 服务
    y
    这里会发现报 Shipped 跳过,因为 Ghost-CLI 在 CentOS 上会不识别已安装的 Nginx,稍后我们自己手动设置
    Enter 回车
  • 第三操作步骤
    Do you wish to set up Systemd?
    是否接下来自动完成系统配置
    y
    Enter 回车
  • 第四操作步骤
    Do you want to start Ghost?
    是否接下来立刻启动 Ghost
    n
    我们需要稍后启动,完成 Nginx 设置,启动也是会报错,无用功
    Enter 回车

第二种安装方法:

使用 MySQL 作为数据库安装指令

ghost install --no-stack

enter 回车便开始自检安装环境

1
2
3
4
5
6
7
8
9
10
✔ Checking system Node.js version
✔ Checking logged in user
✔ Checking current folder permissions
ℹ Checking operating system compatibility [skipped]
✔ Checking for a MySQL installation
✔ Checking memory availability
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Downloading and installing Ghost v1.24.5
✔ Finishing install process

完成自检无错误后开始操作

  • 第一操作步骤
    Enter your blog URL?
    输入您的博客 URL 地址,这里输入 http/https 都可以
    [https://blog.xxx.com](https://blog.xxx.com)
    Enter 回车
  • 第二操作步骤
    Enter your MySQL hostname:
    输入 MySQL 的登陆地址,本机登陆就是 localhost 直接回车即可,非本机记得带端口,也可以键入
    localhost
    Enter 回车
  • 第三操作步骤
    Enter your MySQL username:
    输入 MySQL 的登陆用户名
    xxxxxx
    Enter 回车
  • 第四操作步骤
    Enter your MySQL password: [input is hidden]
    输入 MySQL 的登陆口令密码,输入会隐藏请不要输错
    xxx
    Enter 回车
  • 第五操作步骤
    Enter your Ghost database name: (blog_imzhengfei_com_prod)
    输入 MySQL 的数据库名,需要提前创建好!默认 blog_imzhengfei_com_prod 不更改请直接 Enter 回车,或者
    blog_imzhengfei_com_prod
    Enter 回车
  • 第六操作步骤
    Do you wish to set up "ghost" mysql user?
    是否针对 ghost 建立一个新的访问用户,可以不需要
    n
    Enter 回车
  • 第七操作步骤
    Do you wish to set up Nginx
    是否自动配置 Nginx 服务
    y
    这里会发现报 Shipped 跳过,依旧是因为 Ghost-CLI 在 CentOS 上会不识别已安装的 Nginx,稍后我们自己手动设置
    Enter 回车
  • 第八操作步骤
    Do you wish to set up Systemd?
    是否接下来自动完成系统配置
    y
    Enter 回车
  • 第九操作步骤
    Do you want to start Ghost?
    是否接下来立刻启动 Ghost
    n
    我们需要稍后启动,完成 Nginx 设置,启动也是会报错,无用功
    Enter 回车

配置 Nginx

1.找到 Conf 配置文件

cd /usr/local/nginx/conf/vhost
值得注意这里我是使用了二级域名部署 Ghost 所以存放在 vhost 下,若是一级目录,一般存放在/usr/local/nginx/conf/下

2.修改文件

vi /usr/local/nginx/conf/vhost/blog.xxx.com

3.修改并写入

编辑代码
键盘按下“i”键入,开始修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server {
listen 80;
listen 443 ssl spdy;
ssl_certificate /usr/local/nginx/conf/ssl/blog.xxx.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/blog.xxx.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+xxx!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name blog.xxx.com bk.xxx.com;
access_log /data/wwwlogs/blog.xxx.com_nginx.log combined;
root /data/wwwroot/blog.xxx.com;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

以上我们需要加入的是这些东西,其余的 SSL 是安全证书的声明以及 log 文件的声明,这里我添加了两个域名

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name blog.xxx.com bk.xxx.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

多个请用域名空格隔开,不用加 HTTP/HTTPS
发现 404 NOT FOUND nginx 错误一定是配置文件出错。

修改完毕后
键盘按下“ESC”键入,结束修改
并且输入
:wq保存并退出

4.重启 Nginx 服务

service nginx restart
systemctl restart nginx

测试 Ghost

至此 Ghost 安装已经完毕,开始测试。测试之前需要注意的地方是,不可以进入网站根目录键入 ghost start 进行启动,因为系统是 CentOS 关系。我们可以另寻出路进行 Ghost 的启动。


1.寻址 Ghost 服务

cd /usr/lib/systemd/system/

进入 CentOS 系统的 systemctl 服务主体存贮目录即可查看

ghost_blog-xxx-com.service

带 ghost 即是我们需要的服务,复制粘贴

2.访问 Ghost 测试服务

systemctl start ghost_blog-xxx-com.service

3.查看 Ghost 服务状态

systemctl status ghost_blog-xxx-com.service

看到以下的提示带绿灯
Active: active (running)

!再次注意:
不要使用 ghost start 启动,该命令在 CentOS 系统上会因为服务检查返回值为 unknown 而出错,无用功

4.浏览器访问

访问该域名 https://blog.xxx.com 看到博客页面即表示成功博客安装启动成功!
进入 https://blog.xxx.com/ghost 可以看到后台,并且完成第一次使用的注册和浏览说明书

接下来可以配置开机启动以免后顾之忧

systemctl enable ghost_blog-imzhengfei-com

若需要临时结束可以敲入以下指令
systemctl stop ghost_blog-xxx-com.service

顺带提供操作 Ghost 的几个常用指令

!注意:
操作 Ghost 需要非 root 账户,所以需要加 Sudo 权限加指令。

重新设置 Ghost
sudo ghost config

启动 Ghost
sudo ghost start

重启 Ghost
sudo ghost restart

停止 Ghost
sudo ghost stop

更新 Ghost
sudo ghost update

结语 — 问题解决方案

Q1 暂无


更多问题咨询请留言,有幸看到即回复 Thx

作者

Catooilg

发布于

2020-08-06

更新于

2023-02-05

许可协议

评论