Ghost一款轻量、快速的博客网站部署工具
整体流程概览
- 准备工作: 购买和配置华为云服务器(ECS)、购买并解析域名。
- 环境配置: 连接服务器,创建新用户,更新系统。
- 安装必备软件: 安装 Nginx、MySQL、Node.js。
- 安装 Ghost-CLI: Ghost 官方的安装工具。
- 使用 Ghost-CLI 安装 Ghost: 全自动完成网站搭建和配置。
- 配置华为云安全组: 开放网站访问端口。
- 完成安装: 访问你的网站并设置管理员账号。
第一步:准备工作
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! 的提示。
第六步:配置华为云安全组
这是非常关键的一步,否则你的网站无法从外部访问!
- 登录华为云控制台。
- 进入 “弹性云服务器 ECS” 管理页面。
- 在左侧菜单栏找到 “网络与安全” -> “安全组”。
- 找到你的服务器正在使用的那个安全组(可以在服务器详情页看到),点击它的名字进入配置。
- 选择 “入方向规则” 标签页,然后点击 “添加规则”。
- 你需要添加两条规则:
- 规则 1 (HTTP):
- 优先级: 保持默认 1 或更高。
- 协议端口: 选择 TCP,然后输入 80。
- 源地址: 输入 0.0.0.0/0 (表示允许任何 IP 地址访问)。
- 规则 2 (HTTPS):
- 优先级: 保持默认 1 或更高。
- 协议端口: 选择 TCP,然后输入 443。
- 源地址: 输入 0.0.0.0/0。
- 规则 1 (HTTP):
添加完这两条规则后,你的网站就能通过 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 了。
- 当安装程序再次询问你 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 程序打通了连接数据库的道路。
再次尝试,这次应该会顺利很多!如果还有问题,随时可以再提出来。