Ghost博客以其简洁优雅的写作体验,在技术创作者圈子里一直有着不错的口碑。它基于Node.js开发,免费开源,特别适合追求轻量级、现代化博客平台的朋友。这篇内容就围绕一个具体场景展开:在阿里云ECS Ubuntu 22.04+ 的实例上,把Ghost从零部署起来。整个过程会区分开发模式和生产模式,初次上手建议先用开发模式调试,顺手了再切到生产环境。下面就开始一步步操作。

一、准备工作
首先,你得有一台阿里云ECS云服务器,并且已经绑定了公网IP(没有的话可以绑定弹性公网EIP)。操作系统选择Ubuntu 22.04及以上版本。另外,Ghost对底层软件版本有明确要求:Nginx 1.9.5+,MySQL 8.0.x,Node.js 22.x。别忘了在安全组的入方向规则中放行22、80、443和2368端口,方法就是添加安全组规则,这一步直接跳过的话后面访问会出问题。
二、Ghost博客部署全流程
步骤1:创建新用户
Ghost官方不推荐用root直接操作,所以先创建一个新用户,并给它配置sudo权限。
1. 远程登录到ECS实例(具体方法:使用Workbench登录Linux实例)。
2. 执行以下命令,创建新用户。这里以创建test用户为例。
adduser test
按照提示输入并确认密码(密码默认不显示),后续关于用户信息的提示直接按Enter保持默认即可,最后输入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. 切换到新用户:
su - test
步骤2:安装Nginx
部署Ghost需要Nginx作为HTTP服务器。注意:请确保ECS实例已分配公网IP或绑定EIP。
1. 更新系统软件包:
sudo apt-get update
sudo apt-get upgrade -y
2. 安装Nginx:
sudo apt-get install -y nginx
3. 查看Nginx版本(可选):
nginx -v
回显类似如下(实际版本可能不同):
nginx version: nginx/1.18.0 (Ubuntu)
步骤3:安装MySQL
MySQL是LAMP栈的核心组件,这里用它来存储Ghost的数据。
1. 安装MySQL:
sudo apt-get install -y mysql-server
2. 查看MySQL版本:
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用户密码,替换输入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版本。
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. 创建deb仓库:
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.js版本:
node -v
回显类似:
v22.13.1
步骤5:安装Ghost
(可选)如果希望加速npm安装,可以临时切换到阿里云镜像源,但注意安装完Ghost后最好恢复默认源:
npm config set registry https://registry.npmmirror.com
然后安装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保持默认。 |
| Enter your MySQL username | 输入root后按Enter。 |
| Enter your MySQL password | 输入之前设置的数据库root密码。 |
| Enter your database name | 输入之前创建的数据库名,示例ghost_data。 |

完成设置后,界面下方会输出Ghost的管理员访问地址,例如https://47.98.XX.XX/ghost。
最后测试访问一下:
- 前台首页:在浏览器输入
https://ECS实例公网IP地址,就能看到Ghost的前台页面。如果出现502错误,检查一下实例内的防火墙问题,可以尝试关闭防火墙。

- 后台管理页面:输入
https://ECS实例公网IP地址/ghost,首次访问会跳转到配置页面,按页面提示完成博客初始化即可。

