Ghost站点搭建

💡
Ghost 是一个开源的博客软件,基于 Node.js 构建。Ghost 的目标是提供一个简单、快速、安全的博客平台,让用户可以更加专注于创作内容。

Ghost 的特点包括:
简单易用:Ghost 的界面简洁明了,用户可以快速上手。
快速性能:Ghost 使用 Node.js 作为运行时环境,具有出色的性能。
安全性:Ghost 采用了多种安全措施来保护用户数据。
可扩展性:Ghost 支持多种插件和主题,可以满足用户的个性化需求。
文章排版:无须用户干涉,可直接调用内置组件,你需要做的仅仅是输出文字。因为不属于静态网站,所以支持手机端实时编辑。
SEO: 无须自行设置,默认文章可以做到google、bing引擎隔天收录。
会员功能:支持订阅付费,知识保护(这个你可以自己研究,这是最重要的)。

Ghost 适合以下用户:
希望拥有一个简单、快速、安全的博客平台的用户。
希望可以专注于创作内容的用户。
希望可以自定义博客外观和功能的用户。

官方推荐的前期准备:

1、SSH远程连接工具;
2、域名一个;
3、云服务器一台(建议1核2G以上配置);
4、确保云服务器安全组22端口已打开;
5、服务器镜像Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04或Ubuntu 22.04均可;

部署过程(以Ubuntu 20.04为例)

1、创建新用户,打开终端,以root用户登录到服务器:

# 通过ssh远程连接到你的服务器
ssh root@your_server_ip
# 以超级用户权限更新系统本地最新的软件包,并以自动下一步的方式升级软件包到最新版本
sudo apt update && apt upgrade -y

2、创建除ghost关键字以外的用户名:

# 创建一个新的用户
adduser 你的用户名

回车后会让你输入两次自定义用户名密码,之后的全名、房间号、工作电话、家庭电话、其他等5个选项无须填写,默认回车,然后按下y键回车。

3、给自己的用户名授权sudo权限:

usermod -aG sudo 你的用户名

4、切换到自己的用户名执行后续操作:

su - 你的用户名

5、安装Nginx:

# sudo权限安装nginx
sudo apt-get install nginx

6、查看服务器防火墙状态并启用:

# 查看防火墙状态
sudo ufw status   
# 启用防火墙
sudo ufw enable

按y键确认启用

7、允许防火墙通过 Nginx Web服务器的所有安全端口进行传输:

sudo ufw allow 'Nginx Full'

8、安装MySQL数据库用于存储网站的所有数据:

# 安装 MySQL
sudo apt-get install mysql-server

在较新版本的Ubuntu上,安装MySQL时创建的root用户将默认配置为使用基于套接字的身份验证,只有root Unix用户才能够进行身份验证。Ghost不支持这种身份验证,因此必须更改MySQL根用户以获得密码。运行以下命令以使root用户拥有密码:

# 进入mysql
sudo mysql
# 更新权限
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '<your-new-root-password>';
# 重新读取权限
FLUSH PRIVILEGES;
# 退出mysql
exit

9、全局安装Node.js处理和响应所有的 HTTP 请求,并渲染最终的网站页面:

# 下载并导入Nodesource GPG密钥
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# 创建一个文件夹用于存储GPG密钥的密钥环
sudo mkdir -p /etc/apt/keyrings

# 使用curl从Nodesource的服务器下载GPG密钥,将下载的 GPG 密钥解密,并将结果保存为nodesource.gpg文件
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

# 创建deb仓库,安装nodejs18的版本,这里可以自己指定版本号
NODE_MAJOR=18 # Use a supported version
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

# 再次更新包列表,以确保系统已经知道了新添加的Nodesource仓库并进行安装
sudo apt-get update
sudo apt-get install nodejs -y

注意:自5.71.0版本后,node需要升级到18.X的版本,但是不能安装最新20.X版本,ghost暂不支持(目前最新版本5.90.0),另外config.production.json文件中"database"块中的“host”一定要改成“127.0.0.1”,否则升级后无法启动。如果你的node版本以升级的方式去安装,大概率会出现以下情况,启动时会扫描出多个node版本,那是因为当前升级安装的node版本(18)与之前ghost运行的node版本(比方说16)路径不一致。请按照以下方式去解决:

# 升级Node.js可以使用Node Version Manager(nvm)工具
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
(如果上述这步反复报链接失败,可以通过设置 Git 配置来暂时关闭 SSL 验证,看是否能成功克隆。如果这样做成功了,说明问题很可能与 SSL 证书有关。执行以下命令:git config --global http.sslVerify false 如果这解决了问题,请记得之后再开启:git config --global http.sslVerify true)

# 重新加载您的shell环境以激活NVM
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# 安装指定的Node.js版本(ghost5.71.0-5.72.2版本),5.50-5.70版本用node16都可以,但是5.71以后node必须要升级到18版本
nvm install 18.17.0

# 设置使用新版本
nvm use 18.17.0

# 安装Node.js的官方包管理工具
npm install -g npm@10.7.0 

10、安装Ghost-CLI工具和配置Ghost:

# 使用nmp命令全局安装ghost的最新版本
sudo npm install ghost-cli@latest -g

安装完后可以用ghost version来查看ghost-cli的版本。

11、创建Ghost的安装环境:

# 以sudo权限在/var/www/目录下创建一个你自己站点的文件夹
sudo mkdir -p /var/www/你的站点名称文件夹

# 给该文件夹赋予你前面自建的用户名和用户名组的权限
sudo chown 你的用户名:你的用户名 /var/www/你的站点名称文件夹

# 给该文件夹赋予775权限,775 权限表示只有文件或目录的所有者和同组用户可以读取、写入和执行该文件或目录,其他用户只能读取和执行该文件或目录,但不能修改其中的内容。
sudo chmod 775 /var/www/你的站点名称文件夹

# 切换到你的站点文件夹目录下
cd /var/www/你的站点名称文件夹

12、开始安装ghost:

ghost install

安装开始后,会自动检测你的系统环境,如果全部正确,恭喜你,可以继续进行安装。

配置参数

1、你输入自己的网站地址,输入http://你的域名 或者https://你的域名
2、MySQL hostname:localhost(默认即可)
3、MySQL username:root
4、MySQL password:(自行设置)
5、Ghost database name:(默认即可)
6、允许系统创建一个“ghost”的数据库用户名,按y键回车即可
7、Nginx和systemd安装过程中按y键回车默认即可

后续也可以用ghost setup ssl命令来设置证书

版本升级

# 切换用户名
sudo -i -u 你的ghost用户名

# 进入站点文件夹
cd /var/www/你的站点名称文件夹

# 备份网站
ghost backup

# 一定要手动将主题下面所有的.hbs模版内容备份出来,生产环境中ghost backup命令针对casper主题.hbs模版是不会备份的,版本升级后这些文件会被重新覆盖。 

# 更新博客
ghost update

# 更新完成后,如果在启动过程中报二进制编码问题,请用以下命令运行:
ghost update 最新版本号 --force
ghost update 5.90.0 --force   强制更新启动即可

#将步骤4中的.hbs文件复制粘帖进更新后的模版替换,最后一定要ghost restart命令重新加载才会生效