迁移博客到 Hexo !
21日起床惊闻 PHP 出现 RCE,修复在晚上才会释出,并且夏和的服务器依旧在使用 Ubuntu 22.04 LTS,根本不提供 PHP 8.2+ 的包,虽然可以自己编译,但是夏和懒得折腾,于是决定暂时迁移博客到 Hexo。 等到以后有空,把服务器和本地机器的系统升级到新的版本,之后再迁回去。
迁移过程
- 先在本地安装 Hexo,使用
hexo init初始化一个 Hexo 项目,之后安装主题 Fluid。 - 让 codex 看旧博客的数据库和根目录,导出所有文章的 Markdown 文件和图片资源。
- 将导出的 Markdown 文件和图片资源放到 Hexo 项目中。这一步比较麻烦,因为 Hexo 的文章目录结构和 Typecho 不一样,Typecho 的上传图片资源的目录是由 Typecho 自动生成的,Hexo 的资源目录结构是固定的,需要在文章里手动修改图片资源的路径。虽然 Hexo 的
hexo-renderer-marked插件支持自动将 Markdown 文件里的图片资源路径修改为 Hexo 的资源目录结构,但是似乎需要手动创建和文章同名的资源目录,之后再将图片资源放到这个目录里,并不方便。遂单独在source目录下创建一个 img 目录,将所有图片资源放到这个目录里,然后在文章里手动修改图片资源的路径。 - 其他 Typecho 的功能,比如标签、分类,也需要迁移。Hexo 在 Front-matter 里支持 tags 和 categories 字段,直接在 Markdown 文件里添加这两个字段即可。但是,md
里应该直接写标签和分类的 ** 显示名称 **,而不是 ** slug **,然后在 Hexo 的_config.yml里配置标签和分类的 slug 和显示名称的映射关系:
1 | |
这样才能正确生成永久链接,否则 Hexo 会直接使用标签和分类的显示名称作为 slug,导致永久链接不正确。
- 部署。这里白嫖了 Cloudflare Pages,直接将 Hexo 项目推送到 GitHub 仓库,然后在 Cloudflare Pages 里配置仓库和构建命令即可。注意如果本地初始化的时候用了 pnpm,但是实际上所有的包都是 npm 的包,那么在本地必须删除
pnpm-lock.yaml文件,然后使用npm install安装依赖,否则在 Cloudflare Pages 上构建的时候会识别为 pnpm 项目,导致构建失败。
因为是静态网站,所以评论和搜索都需要特殊的处理。鉴于懒,夏和决定暂时不使用评论和搜索功能,等以后有空再折腾。
迁移博客到 Hexo !
https://ryanmkr.eu.org/tech/migrate-blog-to-hexo.html