如何将 Typecho 博客迁移到 BlogHub

花了半天时间把博客从 Typecho 迁移到了 BlogHub

尽管曾经坚持动态博客程序,并放下豪言——

在网络上写内容,要有一个真正的网站。

实际上,折腾大多是一次性的,博客装修好以后能不荒废就善莫大焉。拿它当新花样试验田,多少有点错把麻烦当锻炼,在一次次的版本升级与 SSL 跑分中,运维倒是学会了,但内容也没工夫再写了。

BlogHub(介绍)提供的静态博客一站式创作托管服务,解决了静态博客一定要手边有开发环境才能写文章的弊端,同时承袭了不用运维云资源和成本低的优势,满足了我对“真正的”网站的主要需求:一个独立的、随时随地都可以访问和更新的网站。

过去不喜欢静态博客还有个原因,就是直接将内容部署到互联网上过于被动,很难对访问行为进行管理。好在,对于 BlogHub 团队而言,这些奇奇怪怪的需求不属于 BlogHub 产品的范畴,但无非就是技术服务。

毕竟 AWS 昂贵的 RDS 实例一关,每个月信用卡账单立刻就能省下两百多元,很难不心动。

迁移的过程是比较简单的,无非就是 Typecho 到 Hugo,甚至更加易用。在这里整理和总结一下,以飨后来者。

备份 Typecho 数据

以防万一,最好还是备份好当前博客的内容,尽管本文描述的迁移并不需要这些备份。

使用 Typecho 的备份功能

对于较新版本的 Typecho,后台控制台下拉菜单有一个 备份,通过它,你会获得一个 dat 文件,包括文章、页面、评论等内容。

关于这个功能的详细情况,请参考 Typecho 提供的说明。

对于旧版本 Typecho 用户,你可以升级到最新版本,或者用本文的 (可选)导出数据库 一节代替这个步骤。

备份文件

Typecho 的备份功能只导出数据,不会下载你的主题、插件和更重要的附件。所以要记得备份文件。

一般来说,只需要从服务器下载 /usr/ 文件夹即可。为了更加稳妥,可以在 Typecho 根目录下载整个网站。

到这里,数据和文件都已导出,其实备份已经完整。但 Typecho 并非一个维护得非常妥善的项目,为了避免恢复数据时踩坑、又要与 PHP 斗智斗勇,还是建议手动导出一下数据库。

(可选)导出数据库

你可以通过命令行、phpMyAdmin、数据库管理客户端等你熟悉的方式,将 Typecho 的库导出为 sql 文件作为备份。

一般来说,导出的 sql 文件包含了 Typecho 引以为傲的七张表。

妥善地保管这些文件,暂时不要停止服务器或数据库。

导出 Hugo 所需的数据

我们需要迁移到新的静态博客上的内容,包括了文章、页面、评论。本文用两个插件来导出这些数据,只需要点击几下鼠标就可以。

用 Export2Hugo 插件导出文章与页面

你可以在 GitHub 下载到这个插件,并参考说明导出 Hugo 可用的文章与页面文件。

用 ByeTyp 插件导出包含了评论的数据

你可以在 GitHub 下载到这个插件,并参考说明导出 WXR 文件。

所谓 WXR 文件,是一个 WordPress 可识别的 xml 文件,一般用于恢复数据到 WordPress 博客。后续我们可以利用它,把评论转移到 Disqus 这样的第三方评论系统去。

迁移到 BlogHub

现在我们可以开始着手迁移到 BlogHub 了。

在 BlogHub 创建一个新博客

参考 BlogHub 的文档,打开 BlogHub 控制台,注册通行证并登入。

在右上角点击 申请博客,一个默认的 BlogHub 博客立刻就可以通过默认的 *.bloghub.io 访问到。

上传旧博客内容

切换目录到 /content/,删除里面的默认内容。

将 Export2Hugo 插件导出的 zip 压缩包上传到该目录,确保自动解压以后 /content/ 存放着页面的 md 文件,/content/posts/ 存放着文章的 md 文件。

发布博客

返回博客,点击右上角的 发布博客,你的内容应该就已经可以访问。

写文章和创建页面

基于 Hugo 的 BlogHub 使用非常简单。在 /content/ 目录下新建 md 文件,仿照已有的文件结构填写开头的 Front Matter,即可创建页面。同理,在 /content/posts 目录下编辑 md 文件即可新建文章。

md 文件是使用 Markdown 语法编写的文件,它用简洁的格式帮助你排版。简书有一份简明的教程可以参考。

开始折腾

BlogHub 提供了一个非常简洁的预览模板,通常这无法满足我们的需求。接下来需要做的事情就是了解 Hugo,修改文件并且在 BlogHub 一键发布。

保持链接的一致

Typecho 默认把文章放在 /archives/slug 的 URL 下,但 Hugo 的默认目录是 /posts/slug,直接让过去的链接全都 404 可不是个好主意。

如果你无法利用诸如网络计算(CloudFlare)的方式实现跳转,也可以直接修改它:把 /posts/ 重命名为 /archives/,然后在 /config.yaml 中修改相关配置:

permalinks:
    post: /archives/:slug/
    page: /:slug/

自定义模板

使用 Hugo 丰富的 theme 来改变博客的外观。

除了 Hugo 官方的主题库以外,你也通过 GitHub、搜索引擎找到更多模板。

目前本博客使用的是 Jimmy 设计的 Stack,点击链接可以参阅它自己的文档。

通常安装并使用一个模板,只需要在 /theme/ 目录下上传模板文件夹,并修改 /config.yaml 进行配置。大部分成熟的模板提供了参考的配置文件甚至示例站点,帮助你快速启用模板。

如果你一开始就不打算使用 BlogHub 提供的预览模板,那么最快捷的办法是,先选择模板,删除 BlogHub 提供的所有文件,直接上传模板提供的 exampleSite 文件夹内的文件到根目录,并且把文章与页面文件上传到 /content/

使用 Disqus 提供评论功能

一些主题可能自带有 Disqus 相关模板,根据文档启用即可。如果没有,就需要自己修改模板将评论模块放置在页面上。

为了数据的延续,尽量先把过去的评论信息导入给 Disqus。

注册并启用 Disqus 后,选择 moderate 选项卡,在右侧的 Tools 中能找到 Import 功能,上传前文中 ByeTyp 插件导出的 WXR 文件,即可导入部分符合要求的评论。

绑定自定义域名

如果你的博客已经达到了一个令人满意的状态,就可以考虑自定义域名了。

在 BlogHub 的控制台修改域名为自己的域名,然后根据文档将 CNAME 记录指向 primary.cluster.bloghub.io,解析生效后立即就可以使用新域名访问你的 BlogHub 站点。

测试可行以后,旧博客的云资源就可以下掉了。叮,每月账单省 200。

寻求帮助

在使用过程中,BlogHub 提供了 Hugo 的构建结果。所以遇到发布后博客没有如预期更新的问题,可以先打开浏览器的调试工具查看构建请求的响应。

如果 Hugo 报错,参考 Hugo 官方文档解决这些问题。

如果 Hugo 无异常,即可初步认为是 BlogHub 相关的问题,通过用户群反馈或通过邮件联系项目组,都能得到畅通的答复。

实际上不相关的问题也可以请他们帮忙看看。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus