芜湖!从 Wordpress 迁移到 Hugo

Wordpress 不香吗?

相反,Wordpress 非常香,优点非常多,针对我自己的实际感受举几个例子:

  1. 丰富的场景:针对个人博客、电商、企业官网等场景,Wordpress 都有非常成熟的解决方案,比如WooCommerce。
  2. 丰富的插件市场:各种插件应用尽有,比如 Markdown 插件,WP-Rocket 缓存插件,All In One SEO 插件,评论插件等等。
  3. 丰富的主题:这点就不多说了,大家都清楚 Wordpress 有大量优秀的主题。
  4. 好用的管理后台:Wordpress 管理后台好用到爆,它就像各种插件和功能的总线,把这一切有机结合在一起,形成了一款功能完备的 Web 后台。
  5. 部署简单:得益于 Wordpress 的火爆,很多云服务平台都提供了 Wordpress 一键部署功能。此外,官方也维护了 Docker 镜像。可以说无论是自己部署还是使用云服务部署,都是非常方便的。

以上,我们可以大概清楚 Wordpress 的用户画像,那就是无论站长懂不懂计算机技术,都可以依靠完善的生态快速撸出来一个 Web 站点,Wordpress 几乎可以满足任何场景的需求,简直就是建站届的“Java”。而 Wordpress 也是凭借着其 简单、用户友好、丰富的生态等特性,占领了全球 40% 的 Web 建站市场,这是一个非常 NB 的成绩。

Wordpress 适合所有人吗?

但是 Wordpress 适合所有人吗?我想并不是的,就像 Wordpress 无法占领 100% 的市场一样,我也有不选择它的理由。针对我自己的个人博客场景,我来聊聊对它的不满:

  1. Wordpress 插件 & 主题好归好,但是得花钱。抛开盗版插件不谈,Wordpress 好用的插件都是收费的,好看的主题也是价格不菲,并且大部分不是买断制,要按年/月付费,插件和主题的费用一年最少几百块。
  2. Wordpress 对本地环境与生产环境数据同步的支持非常差。对 Wordpress 站点的任何操作,包括发文章,都需要在它的管理后台 or 线上服务器上进行。即使我们用 Docker 部署了一套本地环境,那么在本地环境的改动并不能一键同步到生产环境。我作为一个后端研发人员,特别排斥这一点,我不喜欢直接操纵生产环境的数据。
  3. 扩展性差,如果是小站点可以忽略这一点,但是谁不想把网站做大呢?无论是从理论还是事实上,Wordpress 无法应对高负载。我可以从理论角度举几个例子:
    1. Wordpress 的数据几乎全部依靠 Mysql 持久化,而 Wordpress 支持主从结构的 Mysql 吗?根据我的调研,绝大部分的 Wordpress 站点都是单机 Mysql,好多高负载的 Wordpress 站点也是因为这个原因做了迁移。
    2. Wordpress 将文章的数据存储到 Mysql,有访问请求时,读取 Mysql 数据,并实时渲染为 HTML。很明显这一套操作太浪费性能。

我为什么选择 Hugo

每套技术栈都有其适合的应用场景,基于我目前的需求:个人博客、不想额外为插件付费、掌握一定的计算机技术,我认为 Hugo 更适合,理由如下:

  1. 大量漂亮的主题,且不花钱,Wordpress 有漂亮的主题吗?有,但是得加钱。我之前用的主题是 NisargPro 花了我 200 多大洋,还经过自己一系列用心的优化(各位看看我写的 专栏 - Wordpress 建站 就知道我花了多少心血了…),然而还是没有现在的 Hugo-NexT 好看。
  2. Markdown 和 代码块样式的原生支持。给各位看看 Hugo 的 HighLightJS 渲染(Wordpress 用户馋哭了),Wordpress 明明也有插件用 HighLightJS 渲染,但是不知道为什么还是很丑。

image.png

  1. 几乎没有运维成本:除了 Waline 的评论数据需要定时导出数据库备份外,文章的数据在本地有完整的备份。即使哪天机房爆炸了,我只需要搞一个 Nginx 然后上传 Public 文件夹就可以了。Wordpress 备份就需要插件了,同理,好插件得加钱。
  2. 极高的扩展上限,因为 Hugo 在本地渲染 HTML,所以在扩展 Hugo 站点时只需要扩展服务器,完全省去了最难搞定的 Mysql 横向扩展。基于 Hugo 的这一特性,甚至衍生出了更极致的玩法:直接全站 CDN 加速,Public 文件直接扔到云对象存储。此外还有Serverless 网站托管玩法等等,我就不多说了,Google 都搜得到。
  3. 方便的本地环境和生产环境数据同步:可以使用 Docker 搭建本地环境(不搭建也行,Hugo 自带 Web 服务器),在本地调试好后,使用写好的脚本一键将 Hugo 生成的 Public 上传的生产环境。真正做到了本地环境和生产环境的完全同步。我在本地环境怎么折腾都可以,反正不会影响到生产环境,Wordpress 用户又馋哭了,哈哈,谁敢在 Wordpress 服务器乱改配置、乱折腾。

为什么是 Hugo 而不是 Hexo

  1. Hexo 配置相对复杂。
  2. 我的主力语言是 Golang,用 Go 实现的 Hugo 更得我的偏爱。
  3. 博客文章数多了后 Hexo 的速度很慢,关于这一点网上有很多测评。
  4. 因为 Hugo-NexT,众所周知,Hexo 好看的主题非常的多(这也是 Hexo 火爆的原因,毕竟基于前端 Nodejs )。其中最火的莫过于 NexT 主题,我本人也是非常喜欢这个主题。现在,Hugo 社区也有了 NexT 主题,我本人也是准备着手参与 Hugo-NexT 主题开源项目的开发,欢迎大家使用这个主题,有需求就甩给我~

写在最后

  1. 没有完美的技术栈,只有最适合的技术栈!
  2. 迁移博客真是太累了,以后尽量不折腾了。
  3. 迁移后,以前 Wordpress 文章的链接都失效了,不利于 SEO。
  4. 当初搞 Wordpress 费了很多心血,总结了一个 Wordpress 建站专栏,感兴趣的可以看看: 专栏 - Wordpress 建站
  5. 最后,旧博客生前照片留念:

image.png