欢迎来到向昕哲的博客(Astro)
Astro 是什么
Astro 是一套偏「内容站」的前端框架:默认在构建时把页面渲染成静态 HTML,访客打开的是已经生成好的文件,无需每次请求都跑 Python 或数据库。文章用 Markdown(加 YAML 头信息)维护,需要交互时再按需挂载少量客户端脚本。对以阅读为主的博客来说,这样通常更轻、更快,也更容易部署到任意静态托管或自己的 Nginx 目录。
为什么要从 Wagtail 迁过来
Wagtail 是优秀的 Django CMS,适合需要后台编辑、权限与复杂内容模型的团队站点。随着站点以个人博文为主、发布频率不高,维护一套 Python 运行环境、数据库与后台的长期成本会相对突出:安全更新、依赖升级、服务器资源与备份都要跟着走。
迁到 Astro 后,日常写作主要在 Git 仓库里的 Markdown 完成;线上只提供静态文件,攻击面更小,扩缩与迁移也简单。分类、标签、专栏等仍通过 frontmatter 表达,列表页与聚合逻辑由站点代码统一生成,和之前在 CMS 里填的元数据是一类信息,只是换了一种存放方式。
迁移大致分几步
-
保留旧站数据
服务器上原 Wagtail 目录(如/work/xiangxinzhe)里的 SQLite、媒体与代码仍可作为「数据源」,不必立刻删除。 -
同步到本地
在本地仓库执行npm run sync:legacy(需配置config/deploy.local.json),把远端数据库与媒体等拉到legacy-wagtail/,便于离线导入。 -
导入为 Markdown
执行npm run import:legacy,根据数据库中的已发布文章生成src/content/blog/imported/下的.md,并把图片放到public/uploads/等约定路径。 -
构建与发布
npm run build生成dist/,再npm run deploy将静态产物上传到服务器上为本站配置的目录(如astro_publish_path),由 Web 服务器对外提供。 -
以后怎么更新
新文章可直接在src/content/blog里新增或编辑 Markdown;改完后同样 build → deploy,线上才会更新。
若你也在做类似迁移,可以把上面第 2~4 步理解成:先镜像旧站 → 再一次性转成内容仓库 → 最后只发布静态站点。细节以本仓库根目录 README.md 为准。