使用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 使用的推荐系统栈以及最少的配置选项。
特色:
- 快捷安装
- 自动配置
- 快速启动/停止/重启/再配置 Ghost
- 版本升级
- 自检错误
配置内存
内存问题是首要问题,若你的服务器剩余内存使用量>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
- 第一个是查看版本号
- 第二个是查看安装配置位置,其他软件也是类似(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 | ## Allows members of the 'sys' group to run networking, software, |
在 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 | ✔ Checking system Node.js version |
若自检发现
出现 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?
是否接下来立刻启动 Ghostn
我们需要稍后启动,完成 Nginx 设置,启动也是会报错,无用功
Enter 回车
第二种安装方法:
使用 MySQL 作为数据库安装指令
ghost install --no-stack
enter 回车便开始自检安装环境
1 | ✔ Checking system Node.js version |
完成自检无错误后开始操作
- 第一操作步骤
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?
是否接下来立刻启动 Ghostn
我们需要稍后启动,完成 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 | server { |
以上我们需要加入的是这些东西,其余的 SSL 是安全证书的声明以及 log 文件的声明,这里我添加了两个域名
1 | server { |
多个请用域名空格隔开,不用加 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 权限加指令。
重新设置 Ghostsudo ghost config
启动 Ghostsudo ghost start
重启 Ghostsudo ghost restart
停止 Ghostsudo ghost stop
更新 Ghostsudo ghost update
结语 — 问题解决方案
Q1 暂无
更多问题咨询请留言,有幸看到即回复 Thx
使用Ghost-CLI安装Ghost1.x博客
https://blog.catooilg.com/2020/08/06/yuque/使用Ghost-CLI安装Ghost1.x博客/