封面来自:不知道哪个壁纸网站
我的Blog经过一年多的运行,不得不说Astro静态博客真的是省钱又好用。
但是放在Cloudflare托管,国内访问延迟爆炸,有时候加载几十秒都不能加载出来。
在2025年的某天,我漫无目的地翻着Github Education Benefit的权益,突然发现权益里有Microsoft Azure免费静态网页托管,并且有香港CDN节点,于是就把部署在Cloudflare Pages上的Blog迁移到Azure上了。
写这篇文章的目的不仅是记录一下变迁,也给大家提供一些教程与问题解决。
准备
你需要:
1.Azure学生账户(申请Github Education Benefit后就有,申请方法这里不赘述)
2.耐心
开始迁移
Azure的静态网站构建是通过Github Actions来实现的
想必大家的Blog文件都是托管在Github仓库里的吧
当然如果在其他托管平台Azure也支持文件上传,只是有点麻烦
打开 Azure静态网页 仪表盘
链接直达:点这里
点左上角创建即可进入创建表单
填写表单
在 项目详细信息 一栏的 订阅 选项卡选择 Azure for Students
下面的资源组选项卡如果没有的话就新建一个

在 托管计划 一栏的 计划类型 选项卡选择 免费: 适用于业余爱好或个人项目
否则会计费,免费计划所包含的内容可以通过上方 比较计划 链接查看

在 部署详细信息 栏关联你的Github账户并选择你的Blog仓库
然后会出现 生成详细信息 一栏,在 生成预设 选项卡中会有很多网站架构的预设,你可以选择适合自己的网站的预设
如果你和我同样用的是Astro框架,请选择 Custom 预设,选择后下面会弹出三个文本框,空着不填

点击 下一步 而不是 创建+查看

在 部署授权策略 中选择 部署令牌

点击 下一步 而不是 创建+查看
在 Azure Functions API 和暂存环境的区域 中,你可以自由选择你的暂存区域,这里我选择了East Asia,据我所知这个区域的节点在香港,所以延迟会比较低,如果你有其他需求,按需选择即可

点击创建+查看,等待创建完毕,这时Github Actions会构建失败,这是正常现象,接着往下看
Github Actions配置
打开你Blog所在的Github仓库页面
进入 /.github/workflows 文件夹,你会看到一个 azure-static-web-apps-xxxxxxx.yml 的文件,打开它
找到第26行,应该会看到格式为 azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_XXXXXXX }} 的一行,复制他备用
然后修改这个.yml文件为以下内容(因为我懒得写所以让Claude Sonnet 4写的,亲测能用):
name: Azure Static Web Apps CI/CD
on: push: branches: - master pull_request: types: [opened, synchronize, reopened, closed] branches: - master
jobs: build_and_deploy_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') runs-on: ubuntu-latest name: Build and Deploy Job steps: - uses: actions/checkout@v3 with: submodules: true lfs: false
- name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8
- name: 设置 Node.js uses: actions/setup-node@v3 with: node-version: '20' cache: 'pnpm'
- name: 安装依赖 run: pnpm install
- name: 构建项目 run: pnpm run build
- name: 部署到 Azure Static Web Apps id: builddeploy uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_XXXXX }} repo_token: ${{ secrets.GITHUB_TOKEN }} action: "upload" app_location: "dist" api_location: "" output_location: "" skip_app_build: true
close_pull_request_job: if: github.event_name == 'pull_request' && github.event.action == 'closed' runs-on: ubuntu-latest name: Close Pull Request Job steps: - name: 关闭 Pull Request id: closepullrequest uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_XXXXX }} action: "close"然后将第44行和第61行替换为刚刚我们复制备用的那一行的内容,注意缩进
此时Github Actions会重新构建,不出意外,这次能顺利通过,然后回到Azure仪表盘,发现你的网站状态已经为 就绪 了。这时你可以通过Azure提供的二级域名访问你的Blog。
迁移自此完成,接下来是修改域名解析。
修改域名解析
打开Azure仪表盘,找到你刚刚创建的网站进入概述,点击页面中的 添加自定义域

点击左上角 添加 ,然后选择TXT验证,在域名的DNS解析里添加TXT解析以及Azure提供的内容,等待验证通过(大约需要三四个小时甚至更长)

上图上方为正在验证,下方为验证已通过
验证通过后,在你的域名DNS解析里添加CNAME解析,指向Azure给你提供的二级域名

然后访问你的域名,不出意外你的Blog已经能正常访问了,大功告成~
题外话
这次其实也给Blog的模板从Fuwari换到了Mizuki,感觉更加丰富好看了呢~
写到这里已经子夜了,不说了去追番了(
晚安
部分信息可能已经过时










