> ## Content Index
> Fetch the complete content index at: https://www.richarvin.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Ghost站点搭建
- URL: https://www.richarvin.com/ghost-zhan-dian-da-jian/
- Published: 2023-06-19T08:19:55.000Z
- Updated: 2026-09-07T01:47:19.000Z
- Author: Richarvin
- Tags: Docker部署

💡

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用户登录到服务器：

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

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

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

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

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

```bash
usermod -aG sudo 你的用户名
```

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

```bash
su - 你的用户名
```

5、安装Nginx:

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

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

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

按y键确认启用

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

```bash
sudo ufw allow 'Nginx Full'
```

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

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

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

```bash
# 进入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 请求，并渲染最终的网站页面:

```bash
# 下载并导入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)路径不一致。请按照以下方式去解决：

```bash
# 升级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：

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

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

11、创建Ghost的安装环境:

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

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

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

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

12、开始安装ghost:

```bash
ghost install
```

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

### 配置参数

1、你输入自己的网站地址，输入[http://你的域名](http://xn--6qqv7i2xdt95b/?ref=richarvin.com) 或者[https://你的域名](https://xn--6qqv7i2xdt95b/?ref=richarvin.com)  
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命令来设置证书

### 版本升级

```bash
# 切换用户名
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命令重新加载才会生效

```

### 大版本升级（V5-V6）

```bash
# 跨版本升级前请先备份好自己的资料，然后在站点目录下运行下面的命令先升级到V5的最后一个版本
ghost update 5.130.5 --force 

# Ghost从6.0.0开始，官方调整了Node.js的最低要求，Node.js版本必须是22.13.1或更高（22.x系列）
nvm install 22.13.1

# 使用Node22
nvm use 22.13.1

# 设置默认版本（以后新终端默认用这个）
nvm alias default 22.13.1

#在nvm环境下，每个Node版本都有自己独立的全局npm包，所以你需要在Node22环境里重新安装 Ghost-CLI
npm install -g ghost-cli@latest

#升级到Ghost6.x（比如 6.0.3）
ghost update

```