一、当前状态

  • 域名: wuqq547.top(阿里云已购买)
  • 当前托管: GitHub Pages (wubajie.github.io)
  • 目标: 通过自定义域名访问博客
  • ** hugo.toml 已修改**: baseURL = 'https://wuqq547.top/'

二、部署原理

用户访问 wuqq547.top
        ↓
阿里云 DNS 解析 → GitHub Pages IP
        ↓
GitHub Pages 返回你的博客内容
        ↓
浏览器显示 wuqq547.top 的内容

关键点: 博客仍然托管在 GitHub Pages(免费),只是通过自定义域名访问。

三、详细配置步骤

步骤 1:阿里云域名解析配置

登录阿里云控制台:https://dns.console.aliyun.com/

1.1 找到你的域名

点击域名 wuqq547.top 后面的「解析」按钮

1.2 添加 DNS 记录

需要添加以下记录:

记录类型主机记录解析线路记录值TTL
A@默认185.199.108.153600
A@默认185.199.109.153600
A@默认185.199.110.153600
A@默认185.199.111.153600
CNAMEwww默认wubajie.github.io600

说明

  • @ 表示主域名(wuqq547.top)
  • www 表示子域名(www.wuqq547.top)
  • 4 个 A 记录是 GitHub Pages 的 IP 地址(负载均衡)
  • CNAME 记录将 www 子域名指向 GitHub Pages

1.3 截图参考

阿里云解析设置页面:

┌─────────────────────────────────────────────────────────┐
│  添加记录                                                │
│  ┌─────────┬──────────┬──────────────┬────────┐        │
│  │ 记录类型 │ 主机记录  │ 记录值        │ TTL    │        │
│  ├─────────┼──────────┼──────────────┼────────┤        │
│  │ A       │ @        │185.199.108.153│ 600    │        │
│  │ A       │ @        │185.199.109.153│ 600    │        │
│  │ A       │ @        │185.199.110.153│ 600    │        │
│  │ A       │ @        │185.199.111.153│ 600    │        │
│  │ CNAME   │ www      │wubajie.github.io│ 600   │        │
│  └─────────┴──────────┴──────────────┴────────┘        │
└─────────────────────────────────────────────────────────┘

步骤 2:GitHub Pages 配置自定义域名

2.1 进入仓库设置

访问:https://github.com/Wubajie/wubajie.github.io/settings

2.2 找到 Pages 设置

左侧菜单点击 Pages(或在页面中搜索 “GitHub Pages”)

2.3 配置自定义域名

Custom domain 输入框中填入:

wuqq547.top

点击 Save 保存

2.4 启用 HTTPS

勾选 Enforce HTTPS(强制 HTTPS)

等待 DNS 检查完成(可能需要几分钟)

步骤 3:本地验证 DNS 解析

在 Mac 终端执行:

# 检查域名解析
ping wuqq547.top

# 预期输出(4个IP中的一个)
# PING wuqq547.top (185.199.108.153): 56 data bytes

# 检查 www 子域名
ping www.wuqq547.top

# 预期输出
# PING wubajie.github.io (185.199.108.153): 56 data bytes

步骤 4:本地构建并推送

# 进入项目目录
cd ~/Documents/blog_wqq/my-tech-blog

# 清理旧构建
rm -rf public/

# 构建网站(使用新域名)
hugo --minify

# 检查生成的 robots.txt 和 sitemap.xml
cat public/robots.txt
cat public/sitemap.xml | head -20

# Git 提交
git add -A
git commit -m "更新 baseURL 为自定义域名 wuqq547.top"
git push origin main

步骤 5:创建 CNAME 文件(重要)

GitHub Pages 需要在仓库根目录有 CNAME 文件:

# 在 static 目录创建 CNAME 文件
echo "wuqq547.top" > static/CNAME

# 提交
git add static/CNAME
git commit -m "添加 CNAME 文件用于自定义域名"
git push origin main

为什么需要 CNAME 文件?

  • GitHub Pages 通过 CNAME 文件识别自定义域名
  • 每次推送后,GitHub 会读取这个文件并配置域名

步骤 6:验证部署

6.1 检查 GitHub Actions

访问:https://github.com/Wubajie/wubajie.github.io/actions

确认最新 workflow 运行成功(绿色 ✓)

6.2 访问测试

等待 5-10 分钟后访问:

https://wuqq547.top          # 主域名
https://www.wuqq547.top      # www 子域名

6.3 检查证书

浏览器地址栏应该显示 🔒 安全锁标志,点击可查看证书信息

四、常见问题排查

Q1: 访问显示 404?

检查清单:

  • 阿里云 DNS 记录已添加(4个A记录 + 1个CNAME)
  • GitHub Pages 设置中已保存自定义域名
  • static/CNAME 文件已创建并推送
  • DNS 已生效(等待 10-30 分钟)

Q2: 显示 “Site not found”?

# 检查 CNAME 文件
cat static/CNAME
# 应该输出: wuqq547.top

# 重新推送
git add static/CNAME
git commit -m "更新 CNAME"
git push origin main

Q3: HTTPS 证书错误?

在 GitHub Pages 设置中:

  1. 取消勾选 “Enforce HTTPS”
  2. 等待 2 分钟
  3. 重新勾选 “Enforce HTTPS”
  4. 等待证书生成(可能需要几小时)

Q4: DNS 解析不生效?

# 清除本地 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# 使用 dig 检查
dig wuqq547.top +short
# 应该返回 4 个 GitHub IP

Q5: 如何回滚到 github.io?

  1. 删除 static/CNAME 文件
  2. GitHub Pages 设置中删除自定义域名
  3. 阿里云删除 DNS 解析记录
  4. 推送代码

五、部署后的 SEO 优化

5.1 更新搜索引擎收录

提交新域名到搜索引擎:

5.2 更新站点地图

确认 public/sitemap.xml 中的 URL 已更新为新域名:

cat public/sitemap.xml | grep loc | head -5
# 应该显示 https://wuqq547.top/...

5.3 重定向旧域名(可选)

hugo.toml 中添加:

[params]
  # 旧域名重定向提示
  oldDomain = 'wubajie.github.io'

六、完整命令速查

# 1. 创建 CNAME 文件
echo "wuqq547.top" > static/CNAME

# 2. 构建
cd ~/Documents/blog_wqq/my-tech-blog
rm -rf public/
hugo --minify

# 3. 提交
git add -A
git commit -m "配置自定义域名 wuqq547.top"
git push origin main

# 4. 验证 DNS
dig wuqq547.top +short
ping wuqq547.top

# 5. 访问测试
curl -I https://wuqq547.top

七、总结

部署流程

  1. 阿里云 - 添加 4 个 A 记录 + 1 个 CNAME 记录
  2. GitHub - Pages 设置中填入自定义域名
  3. 本地 - 创建 static/CNAME 文件
  4. 构建 - hugo --minify 生成网站
  5. 推送 - git push 部署到 GitHub
  6. 验证 - 等待 DNS 生效后访问

关键文件

  • hugo.toml - baseURL 已设置为 https://wuqq547.top/
  • static/CNAME - 告诉 GitHub Pages 使用自定义域名
  • 阿里云 DNS 解析 - 将域名指向 GitHub Pages

参考链接