迁移至hugo并部署cloudflare workers

Move from wordpress to hugo. Deploy to cloudflare workers without git.
历史history
Section titled “历史history”From
- static web pages(before 2003,手写html+php)
- cutenews(2003)
- blogger publish to static(from 2004)
- moveabletype,drupal…etc…
- wordpress(from 2005)
Now back to static web pages…
从用户角度,现在这些静态生成的新潮流工具,其实和blogger的功能是差不多的。
二十年一个轮回。
hugo or zola
Section titled “hugo or zola”本来是想用zola(基于rust,单文件,又小又快),奈何鄙人水平不够,折腾一个多小时,要保留原来的路径(年月日标题)没看明白怎么搞,也似乎并不能支持中文路径。如果使用几百个文件夹,倒是能显示,那就多了几百个section,怎么归类汇总呢,一堆(年月日)文件夹这些md要怎么管理呢?如果不用文件夹用rewrite,那还搞静态建站干啥?
zola建议的文章写法是,如果有一片文章叫a_zola_guide,那么要建一个目录a_zola_guide,然后写一个index.md,把图片也丢在这个目录。要是写书倒是挺好的,但是日志要这么写,就很费劲也很奇怪。比如在ob里写日记,一点就生成”年月日标题.md”,和wordpress如出一辙。
hugo则相对简单,从wordpress导出的md丢进content,丢到子文件夹也没问题,比如叫import_from_wordpress。再找个主题丢进themes,就能生成静态网站。最牛逼的是,居然能在任何一个md文件直接指定任意的url,对于十几年wordpress老用户太友好了。新写一个md,随便丢到哪里,都能用,这对md写作者也很友好。
性能上,700篇不到的文章,200还是500毫秒并没什么意义,总比wordpress快到飞起。
从内容组织角度看,“年月日标题”这种的确已经过时了,新的内容可以不这样写,但老的不能丢,虽是无人问津的自留地,但迁移的基本原则是链接不能断,否则就不叫迁移叫重建了。
综上,安心用hugo吧。
具体的使用:
Section titled “具体的使用:”从wordpress导出
Section titled “从wordpress导出”使用插件 https://github.com/SchumacherFM/wordpress-to-hugo-exporter 会把所有的blog/page/图片全部打包,并生成markdown和hugo的目录结构的压缩包供下载。 解压至~/opt/hugo_export,需要用到的是md和wp-content的静态文件
安装hugo并新建一个空站
Section titled “安装hugo并新建一个空站”brew install hugo # mac homebrewcd ~/opt/hugo/hugo new site wang.lucd wang.lu
安装congo主题
Section titled “安装congo主题”用手动安装法,不用git,比较干净、简单
下载主题压缩包 https://github.com/jpanther/congo/releases/latest 解压至wang.lu/themes/congo
rm hugo.toml # 删除站点主目录下的hugo的自带配置文件cp -r themes/congo/config . # 把congo主题的配置拷贝到主目录sed -i '' $'1i\\\ntheme = "congo"' config/_default/hugo.toml # 添加 theme = "congo" 至hugo.toml顶部
拷贝wordpress导出的md文件和原有静态文件
Section titled “拷贝wordpress导出的md文件和原有静态文件”cp ~/opt/hugo_export/posts/* content/posts/cp ~/opt/hugo_export/wp-content static/
当然,还有一些零碎的修修补补没在这里写。主要是绝对地址和相对地址,一些格式、符号等;还有原来静态目录里文件和图片的清理;需要一点时间写脚本或手动来做。
# hugo server -D # 预览,带草稿hugo build -d ../wang.lu.static/ --gc --minify # 建站
发布至cloudflare
Section titled “发布至cloudflare”cd .. # 到上级目录建立wrangler.jsonc
// wrangler.jsonc{ "name": "my-static-site", "compatibility_date": "2025-04-01", "assets": { "directory": "./wang.lu.static", }}
npx wrangler deploy # 会自动安装wrangler,会弹出网页要求认证
一行命令,新建了一个worker并上传完成,服务器自动识别到是一个静态项目,不需要用pages来弄了。
随后在cloudflare添加worker的域名(已由cf管理的)。
网上有些文章说有1000个文件的限制,还有点担心重构时会不够用。实测下来,每次通过wrangler deploy是会对照本地和远程文件内容增量发布的,而且似乎并没有文件数量的限制。
不用github的原因:
- 打牛焉用隔山?
- 没有环境和版本问题,和本地预览一致,所见即所得。
供参考的目录结构~/opt
Section titled “供参考的目录结构~/opt”hugo_export├── posts├── wp-contenthugo├── build_and_deploy.sh├── help.txt├── wang.lu│ ├── config│ │ └── _default│ │ └── hugo.toml│ ├── content│ │ └── posts│ ├── static│ │ └── wp-content│ ├── themes│ │ └── congo│ 略├── wang.lu.static└── wrangler.jsonc
参考脚本build_and_deploy.sh
Section titled “参考脚本build_and_deploy.sh”#!/bin/bash
echo "entering hugo wang.lu dir..."cd ~/opt/hugo/wang.lu
echo "hugo building static site..."hugo build -d ../wang.lu.static/ --gc --minify
echo "goto hugo dir ..."cd ..
echo "wrangler deploy to cloudflare..."npx wrangler deploy
打开vi或ob,写完markdown,执行脚本,舒服!
本站最初从drupal换到wordpress版本1.0,2006年初升级至2.0,那时的体验非常棒,记不住是3.0还是4.0开始就越来越强大、臃肿。好几次收到升级邮件,都是忍住不升,后来因为插件bug被脚本黑了一次,为了安全问题只好硬着头皮升级,一直到6.0系列。
这期间主机商的变更和被收购,导出导入数据,折腾插件主题,都有大大小小的问题。我朝到卢森堡的带宽水管小,有时候后台打开的速度让人怀疑人生,但这点带宽载入静态文本是完全够用的,这也是wordpress的问题。最近几年因为写的极少,也懒得再折腾迁移了。
这样不知觉间用了wordpress整整20年!至今仍然是这个星球上最强大的cms之一!致谢🙏
hugo这种静态发布,没有安全问题,没有导出导出问题,升级或不升级只看我高兴不高兴,想发布到哪也是改一行命令的事。
- 数据存储:所有的文本、资源,都显式的保存在本地,再也没有搞坏丢失服务器数据库的可能,要备份或在其他地方部署也就是一个zip包的事。
- 写作体验:因为我本身会一些markdown,也在用ob,所以体验比wordpress要强,wp不知道从哪个版本开始的的block编辑,已经完全把我搞蒙了。
- 内容组织:一篇文章就是一个文本或者一个文件夹,树干、树叶结构更清晰,因为能指定url,和wordpress的灵活性完全相当。
- 主题插件:这方面还是wordpress要强,几乎是无所不包无所不能的。hugo的主题大部分没有sidebar,我也没时间再弄,目前是够用了。
总体而言,好饭不怕晚,比wordpress舒服!
Copyright © 2004-2025 WL