我的博客折腾记

写这篇的时候,博客已经上线有一阵子了。回想从零开始搭它的过程,真的一言难尽,索性记下来,当个纪念,顺便给以后想折腾的人一点参考(虽然大概率没人看)。

为什么会有这个博客

起因挺简单的。我在自学网络安全,东西越学越多,笔记散得到处都是——本地文件夹、Typora 里、甚至有些记在手机的备忘录里。时间一长,想找之前记的东西就得翻半天。当时就想要一个自己的网站,把学习笔记整理上去,还能当个简历上的展示(虽然现在也没好意思往简历里写)。

选型没怎么纠结。WordPress 太重,还要买服务器;GitHub Pages 免费,配合 Hexo 或者 Hugo 都行。我选 Hexo,纯粹是因为搜教程的时候,中文资料最多,踩坑好搜。

主题才是最大的坑

Hexo 装好之后,噩梦就开始了——主题。我前后换了四五个主题,cactus、shiro、fluid、butterfly 全都试过。

  • shiro 界面挺好看,但是分类页的树形折叠怎么调都不对劲,字体一会大一会小,还默认展开,气得我直接换掉。
  • fluid 是别人推荐最多的,功能全,但也正因为太全,配置一大坨,看着就累。
  • butterfly 功能也很强,文档我照着折腾了一晚上,最后还是觉得太花哨,不符合我记笔记的需求。

绕了一大圈,最后回到 cactus。这个主题是真的简洁,排版干净,适合放学习内容。虽然它也有一堆小毛病,比如图片放大不居中、标签有下划线、鼠标悬停的样式不对,但这些问题我自己改 CSS 就能解决,反而有种”这网站真的是我的”的感觉。

图床的折腾

文章里的图片也是个问题。博客是静态托管的,图片不能往本地放(那部署上去就挂了),得用图床。一开始用的 PicGo + GitHub 仓库,配置的时候发现不知道什么时候多了一个 GitHub 配置,还误删过一次仓库里的图片,吓得我以为文章里的图全没了,还好只是仓库里留着的旧图。

后来我干脆写了个脚本,图片自动上传到图床仓库,走 jsDelivr 的 CDN,速度还挺快。这个比手动拖到 PicGo 里省心多了。

部署和域名

最开始用的是 GitHub Pages,但 GitHub 的访问速度在国内不太稳定。后来我挂了个 VPN 访问国外网站的时候发现有些页面状态不一样……总之最后把域名 DNS 解析到 Cloudflare,用 Cloudflare Pages 自动构建。现在只要 git push 上去,等十几秒,网站就更新了,确实省心。

SEO,最磨人的部分

网站上线之后,当然想让搜索引擎收录。Bing 是最顺利的,提交站点地图没多久就收录了。Google 就不一样了——站点地图一直显示”无法抓取”,我在 Search Console 里折腾了一下午,换路径、加斜杠、改 sitemap 格式,全试了一遍,最后发现是网站有 301 跳转,验证文件要求必须是 200,找到原因之后才算解决。

百度更离谱,注册了站长平台,想提交 sitemap,结果显示”提交额度为 0”,我人傻了。查了一圈也没弄明白为啥,后来干脆放弃,反正百度收录不收录,也就那样了。

现在 Google 直接搜”皓月’s blog”能搜到我的站,但是用 site:域名 反而搜不到,也挺有意思的。收录这种事,急不来,佛系了。

说说功能,自己造轮子

最近突发奇想,想要一个像微博/QQ 空间那样的”说说”页面,以后手机能随时随地发点东西。找了一圈现成的方案,没找到完全满意的,干脆自己造。

用 Cloudflare 的 KV 存数据,Pages Functions 写接口,发布和删除都靠一个密码。图片上传也是换了三版方案——第一版只能粘贴图片链接,用着太别扭;第二版想用 Cloudflare R2,结果 R2 要绑信用卡,我信用卡都没有,算了;最后改成图片上传到 GitHub 图床仓库,走 CDN,完美。

中间还踩了个路由的坑,管理密码验证的接口一直返回 405,排查了半天发现是 Cloudflare Functions 的路由写错了,改了文件名才修好。不过折腾完之后,真的很有成就感——能在自己手机上远程发”说说”,感觉整个站都活了。

最后

写博客这件事,比想象中折腾,但也比想象中有意思。现在这站基本能用了,以后大概率还会继续改——比如某个样式看着不顺眼,或者又冒出什么新想法。

折腾的过程本身就是收获,反正我技术就是这么折腾出来的。