我的博客之前只部署在 GitHub Pages 上,大陆访问速度没有保障。调研后选择了腾讯云 EdgeOne Pages 作为国内侧的托管平台,本文记录完整的部署流程和踩过的坑。
为什么是 EdgeOne Pages
先说结论性的背景:
- Gitee Pages 已停止服务:官方答复”由于不可抗原因,Pages 服务已经下线,暂无具体计划再次上线”,这条路线已死
- GitHub Pages 免费但节点在境外:大陆访问时好时坏
- EdgeOne Pages:腾讯云的静态托管平台,有长期免费套餐,全球 3200+ 边缘节点(亚洲占 2500+),支持关联 GitHub 仓库自动构建部署,原生支持 Astro、Hexo 等静态站点生成器
部署全流程
1. 进入控制台
注册/登录腾讯云账号(需实名认证),进入 EdgeOne Pages 控制台,免费套餐一键开通即可。
2. 导入 GitHub 仓库
创建项目 → 选择”导入 Git 仓库”→ 授权 GitHub → 选择博客的源码仓库(注意不是 GitHub Pages 的产物仓库)→ 选择监听分支(我的项目是 master)。
3. 配置构建
平台能自动识别 Astro 框架预设,核对三项即可:
| 配置项 | 值 |
|---|---|
| 构建命令 | pnpm run build |
| 输出目录 | dist |
| 监听分支 | master |
4. 选择加速区域
这是最关键的一步,区域决定了节点资源和域名合规要求:
- 全球(不含 MLC):MLC 即 MainLand China(中国大陆)。此选项节点全部在境外,免备案,新用户默认多在这里
- 含中国大陆的区域:需要域名已完成工信部 ICP 备案,且账号完成实名认证
5. 首次部署
点部署后几分钟内完成,平台分配一个形如 xxx.edgeone.cool 的默认域名。
自动化机制:一次关联,永久自动
这是这套方案最省心的部分。关联仓库时 EdgeOne 会在 GitHub 仓库上挂 webhook,之后:
- 每次
git push到监听分支,EdgeOne 自动拉取代码、云端构建、发布上线 - 同一次 push,我现有的 GitHub Actions workflow 照常构建并发布 GitHub Pages
- 两边互不干扰,项目代码一行不用改,不需要额外写任何配置文件
只有仓库改名/转移、修改监听分支或构建配置、GitHub 侧撤销授权这几种情况才需要重新操作。
默认域名的两个限制
这是本次部署中踩到的最大的坑,提前知道可以少走弯路。
限制一:默认域名是”预览专用”
在控制台点开默认域名时浏览器带着身份凭证可以正常访问;但把裸链接复制到别的浏览器,会返回 401”访问受限或身份验证已过期”,URL 后面要跟一串很长的访问令牌参数才能打开。
结论:默认域名带登录鉴权,只供项目所有者预览,这是合规设计且没有开关可关。正式对外提供服务必须绑定自定义域名。
限制二:不含大陆区域时,大陆 IP 被拦截
加速区域选了”全球(不含 MLC)“后,从大陆网络访问会直接被 EdgeOne 拦截,返回 401 页面。这不是故障,是未备案域名不允许使用大陆节点的合规要求。
绑定自定义域名
解决上述限制的路径:
- 在 EdgeOne Pages 项目 → 域名管理 → 添加自定义域名
- 去域名 DNS 解析处添加一条 CNAME 记录指向平台给出的接入地址
- TLS 证书由平台自动签发,无需手动配置
绑定后没有登录鉴权,任何人拿到链接都能直接访问;大陆访客走境外节点,速度中等但可用。将来域名完成 ICP 备案后,把加速区域切换为含中国大陆,即可获得大陆边缘节点的加速体验。
注意事项汇总
- 构建失败先看日志:常见原因是 Node 版本,在项目”构建设置”里调高即可(与本地保持一致)
- ICP 备案本身免费,通过云服务商线上提交,管局审核约 1~2 周;备案要求域名持有者实名信息与备案人一致
- 免费套餐的用量对个人博客完全够用,超出才涉及计费
总结
整体体验:部署一次配置,之后 push 即双端自动上线——GitHub Actions 负责境外端,EdgeOne Pages 负责国内侧,分工清晰互不干扰。唯一的门槛是”国内访问质量”与”域名备案”强绑定,这是所有国内云服务商共同的合规底线,绕不开,但也是一次性成本。