我的博客从09年开始到现在已经度过了十一个年头,虽然更新的频率变慢了,但也还是一直在坚持输出力求能够帮助到大家。本站最早使用过 ASP 的 PJBlog 到之后大名鼎鼎的 WordPress,之后在 2011年 的时候迁到了 Typecho 一直到现在。
因为多年的数据和主题修改沉淀,我一直懒得更换程序,甚至是自己开发的 Node.js 博客系统 Firekylin 也没有激发我把主站迁移过去。不过随着网络环境的不稳定性,我也在慢慢寻找一些比较靠谱的备份和快速迁移的方式来降低博客的运维成本。
数据库和Docker
现在最方便的部署方式就是容器了,所以我第一个想到的就是将博客容器化。因为 Typecho 可能会有图片上传等用户数据产生,所以比较合理的镜像方式是为 Typecho 程序制作镜像,同时将用户数据挂载到本地。
数据库则选择购买了阿里云专门的数据库服务,降低数据库这块的人工维护成本。这样维护的成本就变成了只要定时备份用户上传文件即可。但是随之又带来了新的问题。
数据库服务贵不好用
首当其冲的就是数据库服务的成本问题,最低配版套餐都要好几百,基本等同于一台主机的价钱。人工运维成本是降低了,但是金钱运维成本直接加倍!而且跨主机商只能使用外网连接,虽然都是同地区服务,但是连接意外的慢。导致主站打开需要好几秒,大大降低了用户体验。
机器性能要求高
然后容器对机器的性能也有一定要求。我一直在使用 1核2G 的低配机器维护着我的网站。由于我维护的站点比较多,使用上容器之后发现机器扛不住。换成了 2核4G 之后好一点了,但是金钱运维成本再次加倍!
镜像构建困难
最后其实是容器构建这块的成本。因为手上很多的老站都是使用 PHP 开发的,之前只是单纯的用这些程序。现在为了制作镜像,需要去看程序的基础依赖。
另外还有一些老程序是破解版的,不太适合放 Docker Hub 上,寻找一个可以让我托管私有镜像的地方也废了我不少时间。之前一直没关注过这块,很早之前知道的几个做容器服务的要么不做了,要么就是改成收费了。后来发现其实 Github 就能直接托管镜像,这才方便了点。
总的来说容器的虽然降低了迁移的成本,但是目前看来性价比不高,想要更好的服务势必要投入更多的资金才行,对我来说有点舍本逐末。
静态部署
同时为了降低我的其它站的运维成本,考虑之后决定将一些不使用的站进行静态博客处理。保留了存档的功能,同时降低了维护成本。主要是现在有很多的免费服务支持静态网站部署。比如我之前在用的 Vercel,很好的提供了对静态博客的支持。在挑选程序的时候发现 Hugo 上我现在在用的主题已经有人实现了 TwentyFourteen,这个主题是我很早之前从 WordPress 的默认主题上迁移过来的。性能非常好。遂就使用它将其他的一些站进行了迁移。
只需要在 Vercel 上使用 Import Template 的形式创建项目即可。轻轻一点它便会自动帮你创建 Github 仓库,分配域名,添加证书,最后自动部署上线。然后我再把仓库克隆下来,把导出的旧数据挪进仓库提高一下即可。Vercel 会自动触发更新的流程。
不管是人力成本,金钱成本,还有数据备份成本上来看,这种方案都达到了最低方案。特别在 Github 给个人开放了无限的私有仓库之后,你连数据隐秘性都不需要考虑了。所以在迁移了四五个老站之后,我看着生下来的主站,决定一不做二不休一块迁移得了。
后记
关于如何进行迁移我之后再单独写一篇文章来讲。迁移之后运维成本直接消失,不仅构建快而且页面访问速度也快,一个字香!之前 Typecho 的 Markdown 格式一直不支持表格语法,换了之后没有这些问题了。不过也不是说没有缺点,之前其实用 Typecho 的后台写文章非常方便,现在换成 VSCode 之后在快捷方式上没有网页的好用,之后再考虑做个单独的发布页吧。