1. 建立代码仓库,上传代码
1.1 选择代码仓库
首先需要建立一个代码仓库,上传博客代码。常见的代码仓库有Gitee和GitHub,考虑国内的法律监管风险以及Gitee已经在国内停止提供Pages服务,还是按照常规做法,在GitHub建立代码仓库,上传源代码。
1.2 给代码仓库命名
考虑到GitHub Pages服务的默认启动目录,需要将代码仓库名称直接命名为<username>.github.io的形式,username为GitHub账户的用户名。
1.3 修改astro.config.mjs
把根目录下astro.config.mjs中的site字段更新为https://<username>.github.io,base字段依然保持为/,依照这种设定, 开发环境(pnpm dev) 和 生产环境(pnpm build) 的调试结果就可以保持一致。
1.4 新增gitignore文件
由于在开发过程中,需要使用pnpm install创建开发环境、使用pnpm dev和pnpm build进行本地调试,而这些命令产生的内容不必上传至代码仓库中,因此,需要在根目录下创建.gitignore文件,以便在提交代码时,忽略无需上传的内容。
# ./gitignore文件内容node_modules/dist/2. 博客部署至GitHub Pages
使用GitHub Actions功能,提前设计用于构建的工作流,在代码提交之后,就可以自动完成部署过程、实现将博客托管在GitHub Pages的操作。
2.1 创建workflows目录
在项目的.github目录下,创建workflows目录,用来存放Github Actions所需的工作流。
2.2 新增deploy.yml文件
在 .github/workflows/ 的目录里创建一个新文件deploy.yml,内容更新如下:
name: Deploy to GitHub Pageson: # 每次推送到 `main` 分支时触发这个“工作流程” # 如果你使用了别的分支名,请按需将 `main` 替换成你的分支名 push: branches: [ main ] # 允许你在 GitHub 上的 Actions 标签中手动触发此“工作流程” workflow_dispatch:# 允许 job 克隆 repo 并创建一个 page deploymentpermissions: contents: read pages: write id-token: writejobs: build: runs-on: ubuntu-latest steps: - name: Checkout your repository using git uses: actions/checkout@v4 - name: Install, build, and upload your site uses: withastro/action@v3 # with: # path: . # 存储库中 Astro 项目的根位置。(可选) # node-version: 20 # 用于构建站点的特定 Node.js 版本,默认为 20。(可选) # package-manager: pnpm@latest # 应使用哪个 Node.js 包管理器来安装依赖项和构建站点。会根据存储库中的 lockfile 自动检测。(可选) deploy: needs: build runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v42.3 配置Actions功能
先在仓库项目的Settings中将Build and deployment的source改为Github Actions,启动Github Actions的功能,然后再在Actions里选择配置deploy.yml文件。

构建结果 当一切设置完成后,
GitHub Actions会在提交代码之后,自动触发部署流程,构建结果也会反馈在页面中。如果上述配置都运作正常,那么GitHub Actions会反馈success的结果,并且博客也会自动部署在GitHub Pages服务上,可以通过<username>.github.io进行访问了。
3. 博客部署至EdgeOne Pages
由于GitHub服务器在境外,经常会发生服务器不稳定的情况,导致博客站点打开速度较慢,影响浏览体验,因此推荐将博客部署在其他服务器上,如CloudFlare、Netify、EdgeOne等,这里就EdgeOne方案予以说明,其他方案与其类似。
3.1 EdgeOne Pages介绍
概述
EdgeOne Pages是基于腾讯云基础设施打造的边缘安全加速平台,专为现代Web开发设计,帮助开发者快速构建、部署静态站点和无服务器应用。
适用场景
-
静态与动态网站托管:适合使用静态生成器,如Next.js、Hexo、Astro等构建的网站,以及使用React、Vue等现代前端框架构建的单页应用。
-
构建部署自动化:通过GitHub、Gitee等代码管理平台集成,在每次代码提交时自动构建和部署网站,简化开发部署流程,提升研发效率。
3.2 EdgeOne账号注册
EdgeOne有国内版和国际版之分,基础功能相同:DDoS防护、Web应用防火墙、内容分发网络、智能加速等,主要区别在于费用结算、ICP备案、账号注册网站和访问速度等:
-
费用结算
- 国内版:使用人民币结算
- 国际版:使用美元结算
-
ICP备案
- 国内版:必须实名认证和ICP备案,才能对外开放使用,而ICP备案需要强制购买云服务器才能申请
- 国际版:可以不用实名认证和ICP备案,就可以对外开放使用
-
账号注册网站
-
访问速度
- 国内版:全球可访问,国内网络访问流畅,但只能使用3小时有效的免费域名,如果要用自定义域名,必须实名认证并网络备案
- 国际版:全球可访问,国内网络访问速度不及专线访问速度,但比cloudflare、netify、GitHub服务快,虽然也只能使用3小时有效的免费域名,但是支持不必网络备案的自定义域名
基于部署易用性、审查机制和成本最小化考量,选择 国际版 进行账号注册和使用。
国际版账号注册后,可以免费领取四个加速计划,只要参与活动、分享至X平台和Facebook平台就行:点击链接即可,不用关心是否分享成功。


3.3 EdgeOne Pages部署Astro博客
EdgeOne Pages目前支持Github、Gitee、CNB等git提供商的接入。
导入Git仓库
- 接入git供应商:在控制台页面,选择git提供商进行接入,此处以
GitHub为例。

- 授权访问:授予EdgeOne访问仓库的权限。

- 选择仓库:选择需要部署的仓库或者授权所有仓库。

填写构建配置
关键这一步骤对于项目能否
正确编译和顺利部署至关重要。
- 选择需要部署的仓库

- 确认构建配置项,确认无误后开始部署
- 项目名称可依照规则,自行命名。
- 构建设置使用默认的Astro方案即可,无需更改。
提醒只有
全球可用区(不含中国大陆)支持不用网络备案的自定义域名

查看部署状态
- 在构建部署中可以查看详细的部署状态

- 在构建部署中选择预览,可以查看项目部署后的展示效果
提醒预览效果只提供
3小时的限时免费预览,如需长期访问,需要绑定自定义域名。

4. 购买自定义域名
可以在阿里云、腾讯云、AWS、cloudflare、spaceship等网站购买域名,这里以在spaceship上购买域名为例进行介绍。
4.1 搜索域名
提醒如果要在国内
备案,请优先选用常见的后缀名,如.com、.net、.xyz、.site等。使用小众的后缀名,有一定概率无法通过国内备案流程。

4.2 对比价格
- 横向对比
各家网站对同一域名给出的价格,货比三家,择优选购 - 纵向考虑
是否有必要存续更长的时间,一般新域名首年、新用户首单都会有划算的价格,但之后域名续费的价格较高,需谨慎考虑
提醒多数情况下,
域名购买后不予退款,下单需谨慎。

4.3 购买完成
- 可以在
域名管理器里查看已经购买的域名

5. 将自定义域名配置到EdgeOne Pages
5.1 在EdgeOne增加自定义域名
- 在EdgeOne的
pages服务中选择部署成功的项目,然后进入项目设置页面,选择添加自定义域名

- 在弹出的页面中输入自定义域名,如
www.shadowchencsd.blog,点击下一步

- 在弹出的页面中,复制
记录值,以用于在spaceship配置CNAME

5.2 在spaceship配置CNAME
- 在spaceship中搜索
高级DNS功能,选择购买的域名,进行CNAME配置

- 在自定义记录中
添加记录,主机填写www,类型选择CNAME,值填写EdgeOne提供的记录值

5.3 在EdgeOne更新自定义域名
- 在
spaceship页面等待DNS广播完成,直到广播图标出现✅

- 切换至
EdgeOne网站的项目设置处,此时新域名的DNS记录变为已设置状态,点击验证进行DNS记录验证

- 验证通过后,
EdgeOne会自动申请免费的SSL证书,用于托管自定义域名网站

- 等待证书申请完成后,就可以通过
自定义域名访问博客站点了

