Ghost一款轻量、快速的博客网站部署工具

Ghost一款轻量、快速的博客网站部署工具
Photo by Christopher Gower / Unsplash

整体流程概览

  1. 准备工作: 购买和配置华为云服务器(ECS)、购买并解析域名。
  2. 环境配置: 连接服务器,创建新用户,更新系统。
  3. 安装必备软件: 安装 Nginx、MySQL、Node.js。
  4. 安装 Ghost-CLI: Ghost 官方的安装工具。
  5. 使用 Ghost-CLI 安装 Ghost: 全自动完成网站搭建和配置。
  6. 配置华为云安全组: 开放网站访问端口。
  7. 完成安装: 访问你的网站并设置管理员账号。

第一步:准备工作

1. 华为云服务器 (ECS)

  • 操作系统: 强烈推荐选择 Ubuntu 20.04 或 Ubuntu 22.04。这是 Ghost 官方支持和测试最完善的系统。
  • 配置: Ghost 对资源要求不高,初级博客选择最低配置(如 1核2G内存)通常就足够了。如果预计流量较大,可以选择更高配置。
  • 公网 IP: 确保你的服务器已经绑定了一个弹性公网 IP(EIP),这是从外部访问你网站所必需的。

2. 域名

  • 准备一个你自己的域名,例如 yourdomain.com​。
  • 域名解析: 登录你的域名注册商后台(如阿里云、腾讯云、GoDaddy 等),添加一条 A 记录,将你的域名指向华为云服务器的公网 IP 地址。
    • 主机记录 (Host): 填 www​ 或 @​ ( @​ 代表根域名,即 yourdomain.com​;www​ 代表 www.yourdomain.com​)。建议两个都设置。
    • 记录类型 (Type): 选 A​。
    • 记录值 (Value): 填你的服务器公网 IP。
    • 注意: DNS 解析生效需要一点时间,从几分钟到几小时不等。

第二步:环境配置

1. 连接到你的服务器

使用 SSH 工具(如 PuTTY、Xshell、macOS 的终端)连接到你的服务器。

ssh root@你的服务器公网IP

然后输入你设置的密码或使用密钥登录。

2. 创建一个新用户

重要: Ghost 不能使用 root​ 用户直接安装,这会带来安全风险。我们需要创建一个新用户。

# 创建一个名为 ghost-user 的新用户(你可以换成自己喜欢的名字)
adduser ghost-user

# 赋予该用户 sudo 管理员权限
usermod -aG sudo ghost-user

# 切换到这个新用户
su - ghost-user

接下来的所有操作,都请在这个新的 ghost-user​ 用户下执行。

3. 更新系统

sudo apt-get update && sudo apt-get upgrade -y

第三步:安装必备软件 (Nginx, MySQL, Node.js)

​Ghost-CLI​ 工具会自动检查这些依赖。我们可以先手动安装好,确保过程更顺畅。

1. 安装 Nginx (网页服务器)

sudo apt-get install nginx -y

安装后,可以启动并设置开机自启(通常会自动完成)。

2. 安装 MySQL (数据库)

sudo apt-get install mysql-server -y

安装完成后,MySQL 会自动运行。

3. 安装 Node.js (Ghost 的运行环境)

Ghost 对 Node.js 版本有要求。我们需要先添加 NodeSource 的官方源。

# 添加 Node.js v18 的源(Ghost 推荐的版本之一)
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash

# 安装 Node.js
sudo apt-get install -y nodejs

第四步:安装 Ghost-CLI

这是 Ghost 的核心管理工具。

sudo npm install ghost-cli@latest -g

安装完成后,可以通过 ghost help​ 命令来验证是否安装成功。


第五步:使用 Ghost-CLI 安装 Ghost

这是最关键的一步!

1. 创建安装目录

我们将网站文件放在 /var/www/ghost​ 目录下(这是推荐的做法)。

# 创建目录
sudo mkdir -p /var/www/ghost

# 将目录的所有权赋予我们刚刚创建的用户
sudo chown ghost-user:ghost-user /var/www/ghost

# 设置正确的目录权限
sudo chmod 775 /var/www/ghost

# 进入该目录
cd /var/www/ghost

2. 运行安装命令

在 /var/www/ghost​ 目录下,执行:

ghost install

接下来,安装程序会以交互问答的方式引导你完成配置。你需要回答以下问题:

​? Do you want to start Ghost?​ (是否现在启动 Ghost?)

输入 y​ (Yes)。

​? Do you wish to set up systemd?​ (是否设置 systemd?)

输入 y​ (Yes)。这会将 Ghost 作为一个系统服务来管理,实现开机自启、崩溃后自动重启等。

​? Do you wish to set up SSL?​ (是否设置 SSL?)

强烈建议输入 y​ (Yes)。Ghost-CLI​ 会使用 Let's Encrypt 自动申请和配置免费的 SSL 证书,让你的网站实现 HTTPS 加密访问。你需要输入一个邮箱地址用于接收证书相关的通知。

​? Do you wish to set up Nginx?​ (是否设置 Nginx?)

输入 y​ (Yes)。Ghost-CLI​ 会自动为你配置 Nginx 反向代理。

​? Do you wish to set up a "ghost" MySQL user?​ (是否设置一个 "ghost" MySQL 用户?)

强烈建议输入 y​ (Yes)。这会创建一个专用的、权限更低的数据库用户,更安全。

​? Enter your Ghost database name:​ (输入 Ghost 数据库名)

直接按回车,让它自动生成一个即可。

​? Enter your MySQL password:​ (输入 MySQL 密码)

输入你为 MySQL root​ 用户设置的密码。如果刚安装完 MySQL 还没设置密码,可以直接回车。(新版 MySQL 可能需要你先配置密码 sudo mysql_secure_installation​)

​? Enter your MySQL username:​ (输入 MySQL 用户名)

输入 root​。

​? Enter your MySQL hostname:​ (输入 MySQL 主机名)

直接按回车,使用默认的 localhost​。

​? Enter your blog URL:​ (输入你的博客网址)

输入你已经解析好的域名,例如 https://blog.765651.xyz​。务必带上 https://​。

安装程序会自动完成所有工作。如果一切顺利,你会看到 Ghost was installed successfully!​ 的提示。


第六步:配置华为云安全组

这是非常关键的一步,否则你的网站无法从外部访问!

  1. 登录华为云控制台。
  2. 进入 “弹性云服务器 ECS” 管理页面。
  3. 在左侧菜单栏找到 “网络与安全” -> “安全组”。
  4. 找到你的服务器正在使用的那个安全组(可以在服务器详情页看到),点击它的名字进入配置。
  5. 选择 “入方向规则” 标签页,然后点击 “添加规则”。
  6. 你需要添加两条规则:
    • 规则 1 (HTTP):
      • 优先级: 保持默认 1​ 或更高。
      • 协议端口: 选择 TCP​,然后输入 80​。
      • 源地址: 输入 0.0.0.0/0​ (表示允许任何 IP 地址访问)。
    • 规则 2 (HTTPS):
      • 优先级: 保持默认 1​ 或更高。
      • 协议端口: 选择 TCP​,然后输入 443​。
      • 源地址: 输入 0.0.0.0/0​。

添加完这两条规则后,你的网站就能通过 80 (HTTP) 和 443 (HTTPS) 端口被外界访问了。


第七步:完成安装

现在,在你的浏览器中访问:

​https://www.yourdomain.com/ghost​

你会看到 Ghost 的后台设置页面。在这里创建你的管理员账号、填写网站标题等信息。

创建完成后,你就可以登录后台,开始写作和美化你的博客了!

  • 网站前台地址: https://www.yourdomain.com​
  • 网站后台地址: https://www.yourdomain.com/ghost​

常用 Ghost 管理命令

在你安装 Ghost 的目录 (/var/www/ghost​) 下,可以执行以下命令:

  • ​ghost stop​: 停止 Ghost 服务。
  • ​ghost start​: 启动 Ghost 服务。
  • ​ghost restart​: 重启 Ghost 服务。
  • ​ghost log​: 查看 Ghost 运行日志,用于排错。
  • ​ghost ls​: 查看当前正在运行的 Ghost 实例。
  • ​ghost update​: 升级 Ghost 版本(非常方便!)。

祝你建站成功!如果在过程中遇到任何问题,可以随时追问。

问题追加

好的,这个错误信息非常清晰!别担心,这是在 Ubuntu 上安装 MySQL 后遇到的一个非常常见的问题。

问题核心

错误信息 Access denied for user 'root'@'localhost'​ 明确地告诉我们:

Ghost 安装程序无法使用你提供的 root​ 用户名和密码成功登录到 MySQL 数据库。

根本原因

在较新版本的 Ubuntu (如 20.04/22.04) 上,MySQL 默认给 root​ 用户启用了一种叫做 auth_socket​ 的认证插件。这种方式允许你通过 sudo mysql​ 直接登录,但不允许使用密码从外部程序(比如 Ghost)登录,即使密码是正确的。

我们需要将 root​ 用户的认证方式改回传统的密码认证 (mysql_native_password​)。


解决方案:三步修复

请完全按照以下步骤操作,这将解决问题。

第一步:清理失败的安装

由于上次安装失败,留下了一些不完整的文件。我们先清理掉它们,以确保一个干净的开始。

# 确保你在 ghost-user 用户下
# 切换到上级目录
cd /var/www/

# 使用 sudo 删除之前创建的 ghost 目录
sudo rm -rf ghost

# 清理 ghost-cli 的缓存信息
rm -rf ~/.ghost/

第二步:修复 MySQL root 用户认证

这是最关键的一步。我们将登录 MySQL 并修改 root​ 用户的认证插件。

(验证步骤) 我们可以测试一下 root​ 用户现在是否能用新密码登录了:

mysql -u root -p

系统会提示你输入密码。输入你刚刚在上面设置的 YourNewPassword​。如果能成功登录,说明问题已经解决!登录后输入 EXIT;​ 退出即可。

退出 MySQL:

EXIT;

刷新权限使更改生效:

FLUSH PRIVILEGES;

进入 MySQL 命令行后,执行以下 SQL 命令。请将 YourNewPassword​ 替换为你自己的一个强密码,并牢记它,因为下一步安装时需要用到。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '99899989';

注意:请务必替换 YourNewPassword​,比如替换成 P@ssw0rd123!​ 这样的强密码。

使用 sudo​ 权限登录 MySQL(这将绕过密码检查):

sudo mysql

第三步:重新运行 Ghost 安装

现在 MySQL 的问题已经修复,我们可以重新开始安装 Ghost 了。

  1. 当安装程序再次询问你 MySQL 的信息时:

​? Enter your MySQL password:​

输入你刚刚在第二步中设置的那个新密码 (YourNewPassword​)!

​? Enter your MySQL username:​

输入 root​

再次运行安装命令:

ghost install

重新创建安装目录并授权:

sudo mkdir -p /var/www/ghost
sudo chown ghost-user:ghost-user /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost

接下来的步骤就和之前的教程一样了。因为 root​ 用户现在可以用密码登录,Ghost-CLI​ 将能够成功创建数据库和专用的 Ghost 用户,整个安装过程也会顺利完成。


总结

这个问题的本质是 MySQL 的默认安全设置与 Ghost 的连接方式不兼容。通过手动修改 root​ 用户的认证方法,我们为 Ghost 程序打通了连接数据库的道路。

再次尝试,这次应该会顺利很多!如果还有问题,随时可以再提出来。