一、当前状态
- 域名:
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.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 |
说明:
@表示主域名(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 设置中:
- 取消勾选 “Enforce HTTPS”
- 等待 2 分钟
- 重新勾选 “Enforce HTTPS”
- 等待证书生成(可能需要几小时)
Q4: DNS 解析不生效?
# 清除本地 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# 使用 dig 检查
dig wuqq547.top +short
# 应该返回 4 个 GitHub IP
Q5: 如何回滚到 github.io?
- 删除
static/CNAME文件 - GitHub Pages 设置中删除自定义域名
- 阿里云删除 DNS 解析记录
- 推送代码
五、部署后的 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
七、总结
部署流程:
- 阿里云 - 添加 4 个 A 记录 + 1 个 CNAME 记录
- GitHub - Pages 设置中填入自定义域名
- 本地 - 创建
static/CNAME文件 - 构建 -
hugo --minify生成网站 - 推送 -
git push部署到 GitHub - 验证 - 等待 DNS 生效后访问
关键文件:
hugo.toml- baseURL 已设置为https://wuqq547.top/static/CNAME- 告诉 GitHub Pages 使用自定义域名- 阿里云 DNS 解析 - 将域名指向 GitHub Pages
参考链接: