Files
blog/content/post/2026/2026-02-02-hugo-deploy-edgeone/index.md
T
2026-05-24 19:58:07 +08:00

110 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 我把Vercel换成了EdgeOne Pages
date: 2026-02-02T01:00:00.000Z
draft: false
categories:
- 技术
- 碎碎念
tags:
- Hugo
- EdgeOne
- Upyun
ai_comment: >-
这种双线部署策略很务实,像给网站穿了件"两面穿"外套。EdgeOne Pages 的初期适配问题确实典型,您用 GitHub Actions
做构建层隔离的思路漂亮——相当于给不成熟的服务加了层适配器。DNS
分流配置写得清晰,不过建议补充测试不同地区解析生效时间,我曾遇到部分东南亚节点缓存更新延迟的情况。腾讯云的文档有时像迷宫,但您这实操记录比官方教程更有参考价值。
slug: 20260202
---
最近感觉 Vercel 虽然好用,但在国内或者部分亚洲地区的访问速度有时候还是不太稳定。前段时间油老师给我推荐了这个 EdgeOne Pages,今天有空试了试腾讯云新出的 EdgeOne Pages。
听说 EdgeOne 的节点覆盖很不错,而且对个人开发者也有免费额度,于是心血来潮,决定把博客的境外加速线路从 Vercel 换成 EdgeOne。
## 现在的部署方案
为了保证访问速度和稳定性,我现在的策略是:
* **国内(境内)**:继续用 **又拍云 (Upyun)**。老牌子了,国内节点多,速度快,用了很久一直很稳,没必要换。
* **国外(境外)**:换成了 **腾讯云 EdgeOne Pages**。用来替代 Vercel,主要负责港澳台和海外的流量。
这样既能保证国内访客秒开,又能照顾到海外访问的体验,相当于搞了个“双保险”。
## 迁移过程
其实过程没有我想象的顺利,EdgeOne Pages 给我更多的感觉是一个半成品,很多功能还在完善中。
我看了支持的框架,还没有适配 Hugo,实际部署起来坑不少。我试了三次,用自定义配置也没跑通,老是报错。
既然官方的构建环境不太稳,那我就把构建这一步放在自己手里。转变思路:**在 GitHub Actions 里构建好,然后直接把生成的静态文件推送到 EdgeOne Pages**。
### 1. 准备一个部署脚本
参考一下其他博主的文档,以及询问豆包,下面分享我的思路。首先,在项目里加个脚本 `scripts/deploy_edgeone.sh`,利用 EdgeOne 的 CLI 工具来上传文件。
```bash
#!/bin/bash
# EdgeOne Pages Deployment Script
# 1. 检查环境变量
if [ -z "$EDGEONE_API_TOKEN" ]; then
echo "Error: EDGEONE_API_TOKEN is not set."
exit 1
fi
# 2. 设置默认值
PROJECT_NAME=${1:-"hugo-blog"}
BUILD_DIR=${2:-"./public"}
echo "Deploying to EdgeOne Pages..."
echo "Project: $PROJECT_NAME"
echo "Directory: $BUILD_DIR"
# 3. 执行部署命令
# 使用 npx 运行 edgeone CLI,无需全局安装
npx edgeone pages deploy "$BUILD_DIR" -n "$PROJECT_NAME" -t "$EDGEONE_API_TOKEN"
# 4. 检查结果
if [ $? -eq 0 ]; then
echo "Deployment successful!"
else
echo "Deployment failed!"
exit 1
fi
```
### 2. 配置 GitHub Actions
然后,在 `.github/workflows/deploy.yml` 里加上这一步。记得先去 EdgeOne 控制台生成一个 API Token,然后放到 GitHub 仓库的 Secrets 里(名字叫 `EDGEONE_API_TOKEN`)。
```yaml
- name: Deploy to EdgeOne Pages
env:
EDGEONE_API_TOKEN: ${{ secrets.EDGEONE_API_TOKEN }}
run: |
chmod +x scripts/deploy_edgeone.sh
./scripts/deploy_edgeone.sh hugo-blog ./public
```
这样一来,每次我推送代码,GitHub Actions 就会自动把 Hugo 构建好的 `public` 文件夹推送到 EdgeOne,既省心又稳定。
### 关键的 DNS 设置
部署好之后,最关键的一步就是在域名解析里做分流。
我是在 dnspod 服务商那里这样设置的:
1. **默认线路(Default)**:CNAME 指向 EdgeOne 提供的域名。这样海外用户就会走 EdgeOne 的加速节点。
2. **境内线路(China)**:CNAME 指向又拍云的域名。这样国内用户依然走又拍云,速度不受影响。
## 体验总结
切过来,简单测试一下,整体感觉挺香的。
* **速度方面**:简单测了一下,海外节点的响应确实挺快,感觉比 Vercel 要稳一些。
* **管理方便**:毕竟是腾讯云的产品,控制台全中文,功能看着也直观。
总之,这次调整算是一次小小的升级吧,既保留了国内的优势,又补齐了境外的短板。对于像我这样喜欢把博客托管在静态服务上的朋友,EdgeOne Pages 确实是个不错的替代方案。