Ghost 是一款专注于内容发布和订阅的现代开源博客平台,由专业团队维护,界面设计精良,内置会员系统和邮件订阅功能,特别适合内容创作者和媒体团队使用。Ghost 官方提供 ghost-cli 工具,可一键完成安装、Nginx 配置和 SSL 证书申请,极大简化了部署流程。本文以 Ubuntu 22.04 为例完整演示。

本文要点

  • Node.js LTS 版本安装
  • 创建专用用户并安装 ghost-cli
  • 使用 ghost-cli 一键部署 Ghost
  • Nginx 反向代理与 Let's Encrypt SSL 自动配置
  • Ghost 基本配置与会员订阅功能

环境要求

组件要求说明
操作系统Ubuntu 20.04 / 22.04官方仅完整支持 Ubuntu LTS
内存≥ 1GB推荐 2GB,Node.js 应用较占内存
Node.js18.x LTS官方推荐版本
MySQL8.0Ghost 5.x 需要 MySQL 8
Nginx最新稳定版ghost-cli 会自动配置

Ubuntu 专属说明

ghost-cli 的自动安装功能目前仅完整支持 Ubuntu 系统。如果使用 Debian,部分自动化步骤(如 systemd 服务配置)可能需要手动处理,建议改用 Docker 部署方式。

安装 Node.js

# 使用 NodeSource 官方脚本安装 Node.js 18 LTS
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs
node --version  # 应输出 v18.x.x
npm --version

安装 MySQL 8.0

apt install -y mysql-server
systemctl enable --now mysql
mysql_secure_installation

创建 Ghost 专用数据库和用户:

mysql -u root -p

CREATE DATABASE ghost DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY '此处填强密码';
GRANT ALL PRIVILEGES ON ghost.* TO 'ghostuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

安装 Nginx

apt install -y nginx
systemctl enable --now nginx

创建专用用户

ghost-cli 要求使用非 root 用户运行,且不能是超级用户,创建专用账户:

adduser ghost-runner
usermod -aG sudo ghost-runner
# 切换到新用户
su - ghost-runner

安装 ghost-cli 并部署 Ghost

# 以 ghost-runner 用户执行
npm install -g ghost-cli

# 创建网站目录(必须空目录且所有者为当前用户)
sudo mkdir -p /var/www/ghost
sudo chown ghost-runner:ghost-runner /var/www/ghost
cd /var/www/ghost

# 运行安装向导
ghost install

ghost install 会交互式询问以下信息:

  1. Blog URL:填入你的完整 HTTPS 域名(如 https://your-domain.com)
  2. MySQL hostname:localhost
  3. MySQL username / password / database:填入前面创建的信息
  4. Set up Nginx:选择 Yes,自动配置反向代理
  5. Set up SSL:选择 Yes,自动申请 Let's Encrypt 证书(需确保域名 DNS 已指向此 IP)
  6. Set up systemd:选择 Yes,开机自动启动

安装完成标志

ghost-cli 全部配置完毕后,终端会输出 Ghost 后台地址(https://your-domain.com/ghost)并提示安装成功。访问后台 URL 完成管理员账号注册即可。

Ghost 常用管理命令

cd /var/www/ghost

ghost status        # 查看运行状态
ghost restart       # 重启 Ghost
ghost stop          # 停止 Ghost
ghost start         # 启动 Ghost
ghost update        # 更新到最新版本
ghost log           # 查看错误日志
ghost config        # 修改配置

配置 Ghost 基本设置

登录后台 https://your-domain.com/ghost,完成以下设置:

  • Site settings:设置站点名称、描述、Logo 和封面图
  • Design:选择内置主题(Casper、Source、Edition 等)或上传自定义主题
  • Labs:开启会员(Members)和订阅(Subscriptions)功能
  • Email newsletter:配置发件服务(推荐 Mailgun 或 Postmark)

会员与订阅功能

Ghost 内置免费/付费会员系统,读者可注册成为会员并订阅更新邮件,付费模式需接入 Stripe。主要功能对比:

功能免费会员付费会员
文章访问公开文章所有文章(含付费专属)
邮件订阅
评论互动是(需开启)
Stripe 付款不适用需配置 Stripe 账户

Stripe 付费功能

Ghost 的付费订阅功能需要 Stripe 账户,在 Ghost 后台 Settings → Membership 中连接 Stripe API Key 后即可开启付费内容。个人博客通常仅使用免费会员功能即可。

小结

  • ghost-cli 将环境配置、Nginx、SSL 一步完成,是 Ghost 官方推荐的部署方式
  • 内置会员订阅系统是 Ghost 区别于其他博客系统的核心特色
  • 常用管理命令以 ghost 开头,在 /var/www/ghost 目录下执行
  • 定期运行 ghost update 保持版本最新,享受安全更新

常见问题

ghost install 提示 SSL 申请失败怎么办?

最常见原因是域名 DNS 尚未生效。确认域名 A 记录指向服务器 IP 且已传播(可用 dig your-domain.com 验证),然后重新运行 ghost setup ssl。

Ghost 可以迁移到其他服务器吗?

可以。在旧服务器后台 Labs → Export 导出内容 JSON,在新服务器安装 Ghost 后通过 Labs → Import 导入。图片等媒体文件需要单独复制 /var/www/ghost/content/images 目录。

Ghost 和 WordPress 哪个更适合内容订阅型站点?

Ghost 的会员订阅系统是原生内置的,体验更流畅;WordPress 需要通过 WooCommerce 等插件实现类似功能,配置更复杂。如果核心需求是内容订阅,Ghost 是更好的选择。

Ghost 支持中文界面吗?

Ghost 后台目前以英文为主,但前台(读者端)支持多语言,主题的语言跟随主题的 i18n 配置。可通过修改主题文件将前台界面汉化。