把WordPress博客迁移到Hugo,服务器成本从800降到60块一个月

王尘宇 经验分享 2

去年底把我一个做了三年的WordPress博客迁到了Hugo静态站。服务器从阿里云4核8G的ECS(月均800块)换成了Cloudflare Pages(免费)+一个2核2G的轻量云跑后台(月均60块)。踩了不少坑,做个记录。

为什么迁

那个博客大概400篇文章,日PV 2000左右。WordPress跑在4核8G上还经常被打挂——不是流量大,是每次有人发个spam评论或者爬虫来扫/wp-admin,PHP-FPM就飙CPU。加上MySQL慢查询一堆,wp_postmeta表膨胀到200万行。

维护成本也不低:每周得手动更新插件、清理垃圾评论、优化数据库。有一回两个月没管,插件漏洞被挂马,首页被插了菠菜链接。实在不想伺候了。

迁移过程

选Hugo是因为生成速度最快——400篇文章加模板,本地跑一次build大概3秒。Hexo和Astro我也试过,Astro功能更强但build时间大概15秒,Hugo对于纯内容站够用了。

导出用的是WordPress自带的导出工具,生成一个XML文件。然后用一个叫wordpress-to-hugo-exporter的插件直接输出Hugo格式的markdown——这个插件比手动转换靠谱,front matter、分类、标签都自动处理好了。

坑一:中文URL。WordPress的固定链接是 /%category%/%postname%/,Hugo默认是全英文slug。导出的时候中文标题生成的slug是一堆乱码。解决方案是手动给每篇文章的front matter加slug字段,用拼音。写了个Python脚本批量处理的。

坑二:图片。WordPress的媒体库图片都在 /wp-content/uploads/ 下,有几万张。全量下载下来后,用了一个bash脚本把文章里的图片路径从绝对URL替换成相对路径。最大的坑是有些老文章用了WordPress自动生成的缩略图尺寸(比如 300x200),迁移后图片裂了一大片,最后统一用CLI工具把图片批量resize到标准宽度800px。

坑三:评论。Hugo本身没有评论系统。最后用的utterances——基于GitHub Issues的评论组件,免费、无广告、没隐私问题。唯一的代价是读者评论需要GitHub账号,这对技术博客来说问题不大。

部署用的Cloudflare Pages,push到GitHub自动触发构建和部署。同时绑定了自定义域名,SSL自动续。目前跑了半年,没挂过一次,Google PageSpeed分数从之前的43分涨到了98分。

值不值

迁移总共花了两周业余时间,主要耗在图片处理和slug整理上。但算笔账:一年省下将近9000块服务器费,加上再也不用半夜收到CPU告警爬起来修服务器。值。

标签: wordpress Hugo 静态网站 网站迁移 博客优化

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~