从 GitHub Pages 迁移到 EdgeOne Pages
背景
本博客使用 VitePress 构建,最初部署在 GitHub Pages 上:https://gin4ever688.github.io/blog/ ,但是GitHub Pages 在国内访问不稳定,经常打不开,体验很差。
于是我开始寻找新的部署方案,目标很明确:
- 博客能稳定访问,不再依赖 GitHub Pages
- 部署流程尽量简单,最好不用买服务器
- 能用自己的域名,而不是每次访问临时链接
- 后续还能扩展,比如用子域名部署其他项目
一句话,花小钱办大事
解决方案
静态博客的选择其实不少,各有侧重:
| 方案 | 是否免费 | 是否需要服务器 | 是否需要备案 | 国内访问 |
|---|---|---|---|---|
| EdgeOne Pages(不含中国大陆) | 免费 | 不需要 | 不需要 | 香港/海外节点,速度一般但稳定可用 |
| EdgeOne Pages(含中国大陆) | 免费 | 不需要 | 需要 | 大陆节点,速度最快 |
| Vercel / Cloudflare Pages | 免费 | 不需要 | 不需要 | 时好时坏,不够稳定 |
| 阿里云 OSS / 腾讯云 COS + CDN | 低费用 | 不需要 | 需要 | 稳定,适合长期运营 |
| Gitee Pages / GitCode Pages | 曾免费 | 不需要 | 视情况 | 基本停服,不建议 |
我最终选择的是 EdgeOne Pages + 自定义域名:
- 免费托管,不用买服务器
- 加速区域选择
全球可用区(不含中国大陆),不用备案 - 绑定自己的域名
gin4ever.top,十几块一年,可按年续费,很划算 - GitHub 继续作为源码仓库,用户访问的是 EdgeOne 的节点
如果之后想要大陆节点的最快速度,再补 ICP 备案,把加速区域切换为“含中国大陆”即可。
部署
在 EdgeOne Pages 创建项目并导入 GitHub 仓库即可,VitePress 项目的构建配置如下:
| 配置项 | 值 |
|---|---|
| 安装命令 | npm install |
| 构建命令 | npm run docs:build |
| 输出目录 | docs/.vitepress/dist |
| Node 版本 | 22 |
| 生产分支 | main |
注意:VitePress 的 base 默认是 /,当前配置使用 process.env.BASE_URL || '/',部署到 EdgeOne 时不设置 BASE_URL 即可。
部署成功后,EdgeOne Pages 会生成一个预览链接,但这个链接只有 3 小时有效期,到期后不能长期访问。项目本身还在,只是临时地址过期,所以要绑定自定义域名。
可多个项目
EdgeOne Pages 支持一个账号下创建多个项目,每个项目对应一个 GitHub 仓库:
- 在 EdgeOne Pages 创建新项目:https://console.cloud.tencent.com.cn/edgeone/makers
- 导入你的 GitHub 仓库
- 按该项目的框架配置构建命令和输出目录
- 在新项目的域名管理中绑定一个子域名
一个账号最多 40 个项目,单个项目最多绑定 20 个自定义域名,个人博客足够用。
域名
域名在腾讯云、阿里云等注册商购买即可。我在腾讯云买的 gin4ever.top 这个主域名,子域名并不是单独注册的,购买地址:https://cloud.tencent.com/product/domain
只要 gin4ever.top 的 DNS 由你控制,那么 a.gin4ever.top、xxx.gin4ever.top 这类子域名都归你管理,别人无法注册属于你的子域名。
但子域名不会自动生效,需要两步:
- 在对应 EdgeOne Pages 项目的“域名管理”中添加自定义域名,例如
a.gin4ever.top - 在 DNS 服务商处为该子域名添加 CNAME 记录,指向该项目提供的目标地址
域名绑定示例:
| 子域名 | 用途 | CNAME 指向 |
|---|---|---|
gin4ever.top | 博客主页 | 博客项目的目标地址 |
a.gin4ever.top | 第二个项目 | 第二个项目的目标地址 |
demo.gin4ever.top | 演示项目 | 演示项目的目标地址 |
每个项目都有自己独立的 CNAME 目标地址,不能把博客项目的 CNAME 直接复制给其他项目。
注意事项
- EdgeOne Pages 的默认预览链接只有 3 小时有效期,只是临时地址,不代表项目被删除,绑定自定义域名后才能长期访问。
- 选择“全球可用区(不含中国大陆)”或“中国香港”区域时,自定义域名不需要备案;选择“含中国大陆”区域时,自定义域名必须先完成 ICP 备案。
- ICP 备案备案的是“域名 + 网站”,不是服务器本身,但首次备案需要一台满足条件的大陆云资源作为接入服务商,例如腾讯云 CVM 或轻量应用服务器,EdgeOne Pages 本身不能作为备案云资源。
- 备案通常要求大陆服务器包年包月 3 个月以上,备案本身免费,花钱的是云资源。
- 备案通过后不建议立刻退掉服务器,先保持一段时间,避免备案被核查。
- DNS 不建议直接配
*.gin4ever.top泛解析,会影响mail、api等记录,稳妥做法是每个子域名单独添加 CNAME。 - 多个项目之间相互独立,修改其中一个项目的部署不会影响其他项目。
- GitHub 只作为源码仓库和构建触发源,网站最终由 EdgeOne Pages 提供服务,不再依赖 GitHub Pages 的访问稳定性。
