Ghost 是一个基于 Node.js 开发的免费开源博客平台,核心价值在于让写博客这件事变得简单流畅——从创作到发布,一气呵成。今天这篇内容,就围绕阿里云官网提供的方案,讲清楚如何在 Ubuntu 22.04 及以上操作系统的 ECS 实例上,把一个 Ghost 博客跑起来。
搭建 Ghost 博客可以选两种模式:开发模式(development)和生产模式(production)。如果你是第一次上手,建议先用开发模式,方便调试和熟悉流程。下面的操作示例,主要面向初次使用阿里云建站的个人用户,全程以云服务器 ECS 为例。

一、准备工作
在动手之前,先确认几样东西已经到位。首先,你得有一台云服务器 ECS,而且必须配一个公网 IP 地址。如果还没有公网 IP,可以绑定弹性公网 EIP。如果连 ECS 实例都还没买,那得先买一台,操作系统选 Ubuntu 22.04 及以上版本。

Ghost 对几个核心组件有明确的版本要求,这里列清楚:
- Nginx:1.9.5 及以上版本
- MySQL:8.0.x
- Node.js:22.x
另外,实例安全组的入方向规则必须放行 22、80、443 和 2368 这四个端口。端口放行的操作很简单,配置安全组规则即可。
二、Ghost 博客部署全流程
步骤1:创建新用户
Ghost 官方不太推荐直接用 root 用户操作,所以得新建一个普通用户,再给它配上必要的权限。
1. 远程登录到 ECS 实例。具体怎么登录,用 Workbench 或者 SSH 都行。
2. 执行以下命令创建新用户(这里以 test 为例):
adduser test
在 New password: 和 Retype new password: 提示处输入并确认密码(输入时密码默认不显示)。接着,在 Enter the new value, or press ENTER for the default 提示处直接回车保持默认,或者根据实际情况填写用户信息。最后在 Is the information correct? [Y/n] 处输入 Y 确认。
配置过程大致如下:
root@iZbp1g2d4dpki2mf63b****:~# adduser test
Adding user `test' ...
Adding new group `test' (1000) ...
Adding new user `test' (1000) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
3. 把新用户添加到 sudo 组:
usermod -a -G sudo test
4. 切换到新建的 test 用户:
su - test
步骤2:安装 Nginx
部署 Ghost 需要 Nginx 作为 HTTP 服务器,先把它装上。
重要:确保 ECS 实例已分配公网 IP 或绑定弹性公网 IP,否则后续访问会出问题。
1. 更新操作系统和软件包:
sudo apt-get update
sudo apt-get upgrade -y
2. 安装 Nginx:
sudo apt-get install -y nginx
3. 查看 Nginx 版本:
nginx -v
4. 回显信息类似:
nginx version: nginx/1.18.0 (Ubuntu)
软件包会不定期更新,实际版本以安装时为准,这个不影响。
步骤3:安装 MySQL
MySQL 是 Ghost 的数据库后端,用的是关系数据库和 SQL 来管理数据。
1. 安装 MySQL:
sudo apt-get install -y mysql-server
2. 确认版本:
mysql -V
回显类似:
mysql Ver 8.0.40-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
3. 连接 MySQL:
sudo mysql
4. 创建 Ghost 使用的数据库(以 ghost_data 为例):
CREATE DATABASE ghost_data;
5. 设置 root 用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '输入root账号密码';
6. 重新加载权限表,让改动生效:
FLUSH PRIVILEGES;
7. 退出 MySQL:
exit
步骤4:安装 Node.js
Ghost 目前支持的 Node.js 版本是 22.x LTS,其他版本不行。下面演示 22.x 的安装。
1. 下载并导入 NodeSource GPG 密钥:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
2. 添加 NodeSource 仓库:
NODE_MAJOR=22
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
3. 更新并安装 Node.js:
sudo apt-get update
sudo apt-get install -y nodejs
4. 查看版本:
node -v
5. 回显类似:
v22.13.1
步骤5:安装 Ghost
先提一个可选项:更换 npm 镜像源可以加速 Ghost 安装。如果要用阿里云镜像,执行:
npm config set registry https://registry.npmmirror.com
注意:镜像源会影响后续所有 npm 包安装,建议 Ghost 安装完成后恢复默认配置:
npm config set registry https://registry.npmjs.org/
安装 Ghost-CLI 命令行工具,方便快速配置:
sudo npm install ghost-cli@latest -g
当出现下图所示的提示时,表示安装成功。

创建 Ghost 安装目录并授权:
sudo mkdir -p /var/www/ghost
sudo chown test:test /var/www/ghost
sudo chmod 775 /var/www/ghost
进入目录并启动安装:
cd /var/www/ghost
ghost install
安装过程中需要配置几个关键参数,下面表格整理好了:
| 参数 | 说明 |
|---|---|
| Enter your blog URL | 输入已解析的域名,例如 https://example.com。本示例用公网 IP 测试,输入 https://47.98.XX.XX。 |
| Enter your MySQL hostname | 数据库连接地址。MySQL 和 Ghost 在同一台实例,直接回车保持默认即可。 |
| Enter your MySQL username | 数据库用户名,输入 root 后回车。 |
| Enter your MySQL password | 数据库密码,就是步骤3中设置的 root 密码。 |
| Enter your database name | 数据库名,输入 ghost_data 后回车。 |

配置完成后,界面下方会输出 Ghost 的管理员访问地址,例如 https://47.98.XX.XX/ghost。
测试访问:
- 前台首页:在本地浏览器输入
https://ECS实例公网IP地址,就能看到 Ghost 的前台页面。

如果访问出现 502 错误,检查一下实例内防火墙是否关闭。
- 后台管理页面:输入
https://ECS实例公网IP地址/ghost,首次访问会要求完成博客配置,根据页面提示一步步操作即可。

