1298 字
6 分钟

重新启程 从Halo到Astro迁移记录

2025-12-12
浏览量 加载中...

1.为什么要更换博客框架#

Halo博客的痛点#

  • 数据库: 由于Halo博客是一个动态的博客框架,依赖数据库,尽管提供了 PostgreSQL 这样高性能低占用选择,但对于我这类访问量低的博客来说,维护一个数据库多少有些得不偿失。
  • 资源占用: Halo 博客基于 Java 构建,这使得它的内存占用较高,通常 docker + Halo本体 + 数据库差不多要占用500-700mb的内存,这还是 Halo 内存优化后的结果。如果按照我目前使用1Panel的部署方式,一台2g内存的服务器才能保证有一定的容量。
  • 备份困难: Halo 提供了免费自动备份的插件,但是如果你想要异地自动备份则需要购买付费插件。
  • 难以应对多并发: 在itdog测试时,我发现我的博客基本无法抗住快速测试这样的多并发场景。
  • 网页加载速度与高成本: 由于是动态博客,在网页加载速度上有先天劣势,如果套CloudFlare的CDN且不做优选的话,加载速度是难以忍受的,而直连的香港服务器成本也相对较高。

为什么选择Astro#

  • 社区完善: 作为一个还算新兴的框架,Astro的社区目前已经非常完善,适合小白上手,提供了许多优秀的主题。而Hexo、Hugo这样的老框架虽然成熟但是明显在易用性上落后于Astro。
  • 无服务器: 静态站点最大的优点是无需服务器部署,可以自动化托管在诸多平台上,快速且安全,特别是之前的Next.JS漏洞让我意识到服务器存在许多风险,我其中一台就因为Umami被植入了挖矿病毒。
  • 文件路由: Astro的文件路由我认为是十分优秀的,可以满足绝大部分需求。

2.选择合适的主题#

之前在Halo中使用的是由 jiewenhuang 大佬移植的 Fuwari 主题,类似MD3的设计风格,简介流程,非常符合我的审美。

jiewenhuang
/
halo-theme-fuwari
Waiting for api.github.com...
00K
0K
0K
Waiting...

既然这次换成Astro,那就继续使用 Fuwari 主题,不过原版主题功能不够丰富,所以我选择了 CuteLeaf 大佬基于 Fuwari 主题二次开发的 Firefly 主题。

saicaca
/
fuwari
Waiting for api.github.com...
00K
0K
0K
Waiting...
CuteLeaf
/
Firefly
Waiting for api.github.com...
00K
0K
0K
Waiting...

3.在本地安装Astro#

Firefly 主题的开发者们写了十分详细的文档,所以很轻松的搭建起了博客框架。

Firefly文档地址:****https://docs-firefly.cuteleaf.cn/

3.1依赖安装#

  1. 安装 Node.js

    访问 Node.js 官网 下载并安装最新版本的 Node.js。

    安装完成后,打开终端或命令提示符,运行以下命令验证 Node.js 是否安装成功:

    Terminal window
    node -v
    npm -v
  2. 安装 pnpm

    如果您尚未安装 pnpm,可以通过 npm 安装:

    Terminal window
    npm install -g pnpm

    安装完成后,打开终端或命令提示符,运行以下命令验证 pnpm 是否安装成功:

    Terminal window
    pnpm -v
  3. 安装 Git

    访问 Git 官网 下载并安装适合您操作系统的 Git 版本。

    安装完成后,打开终端或命令提示符,运行以下命令验证 Git 是否安装成功:

    Terminal window
    git --version

3.2项目启动步骤#

  1. 克隆项目

    首先,Fork Firefly 项目并克隆到本地:

    Terminal window
    git clone https://github.com/you-github-name/Firefly.git
    cd Firefly
  2. 安装依赖

    使用 pnpm 安装项目依赖:

    Terminal window
    pnpm install
  3. 启动开发服务器

    运行以下命令启动开发服务器:

    Terminal window
    pnpm dev

4.文章迁移#

Halo的插件市场提供了文章导入导出插件,可以很方便的导出Halo文章为MD文件。

Lyn4ever29
/
halo-plugin-export-md
Waiting for api.github.com...
00K
0K
0K
Waiting...

在Astro框架优秀的智能路由的加持下,我可以把博客目录结构整理的井井有条:

src/
└── content/
└── blog/
├── 2024/ <-- 年份文件夹
│ └── my-trip/ <-- 文章独立文件夹
│ ├── index.md <-- 文章内容
│ └── photo.jpg <-- 文章图片
└── 2023/
└── old-post/
├── index.md
└── cover.png

5.部署上线#

既然选择了Astro框架,那肯定是选择无服务器部署,我选择了以CloudFlare Pages为主,Vercel、EdgeOne Pages为备用线路的部署形式。线路切换的功能来自二叉树树大佬的魔改版Fuwari主题:

afoim
/
fuwari
Waiting for api.github.com...
00K
0K
0K
Waiting...

5.1 CloudFlare Pages 部署与优选#

我选择 CloudFlare Pages 作为博客的主部署平台,原因在于Pages对免费用户提供了充足的用量:

  • 连接代码仓库:在 CloudFlare Dashboard 中进入 “Pages” 面板,选择 “创建项目”。直接连接到你的 GitHub仓库。
  • 构建配置:框架预设选择 Astro,Pages 服务会自动识别并填充正确的构建设置:
  • 构建命令:pnpm run build
  • 输出目录:dist
  • 部署:点击“保存并部署”。几分钟内,你的博客就会有一个 *.pages.dev 的临时域名。

优选我参考的是这位大佬的教程:加速你的项目!详解 Cloudflare Workers & Pages 优选域名设置 | CMLiussss Blog

Vercel和EdgeOne Pages的部署方式几乎一样,但要注意的是Vercel虽然无需优选就要很快的访问速度,但是免费额度较少,EdgeOne Pages我个人体验感觉不如CloudFlare Pages,所以都充当备用线路。

重新启程 从Halo到Astro迁移记录
https://www.chaxuji.de/posts/halo_to_astro/
作者
Liebesfreud
发布于
2025-12-12
许可协议
CC BY-NC-SA 4.0
最后更新于 2025-12-12

评论区

目录