Blog 部署方式更新

在经过了若干年以后,Blog 的文章没更新多少,但部署方式倒是又更新了,挺勤快的…

老版本

上个版本的部署方式虽然觉得有点啰嗦,但易用性是最好的。其理念是所有的文章 md 数据保存在 database 中,有一个后台 admin 页面可以用于更新 blog。

有前端页面那就一定有后端服务,没错,有个 Java 写的 CRUD 服务,在更新文章至 database 的时候,会同时在服务器中写 hexo source file and generate the hexo public files.

(画外音 后端需要配置 hexo 所在根目录

此 deploy architecture 的优势:

  1. 在任意一个有浏览器环境的地方,你都可以随时的写 blog
  2. 文章上传图片资源非常方便,复制粘贴即可上传至 阿里/腾讯云 对象存储,且返回资源 url

缺点:

  1. 需要自己撸一套 前端 + 后端代码,存在一定工作量,且不少。
  2. 需要维护一套额外的 database, Java 服务也很吃内存,地主家余粮太少了
  3. 需要配置 Nginx, 前端域名,后端 Api 以及 hexo public 资源域名
  4. 维护 ssl 证书,免费的 https 证书每三个月就会过期 (国内太恶心啦)
  5. 迁移复杂,由于经常到处白嫖低价服务器,所以每次服务器迁移都需要重新配置前端资源以及 Nginx
  6. 由于迁移,每次都需要在新物理机上安装 hexo 以及 next 主题,如果版本差距大,可能要处理配置兼容问题

之前为什么想维护在 database 呢,因为觉得我之后可能不用 hexo 用其他的了,这样我迁移就非常简单,实际想多了。。。

当前版本

目前版本的架构是在本地 hexo init 并进行完个性化配置后,将所有文件 push 到远程仓库
通过 Vercel 托管部署,将最新文章推送到仓库后,Vercel 将自动触发构建。

优点:

  1. 可自定义域名,自动托管 ssl 证书
  2. 无需任何前端、后端、database
  3. 通过 github 保存文章数据
  4. hexo 以及 next 版本、配置都维护在仓库中,不需要动不动重新安装升级了。
  5. 无需服务器资源,再也不用迁移了!

缺点:

  1. 只能在自己电脑上写 blog (git 环境)
  2. 图片上传功能不是很友好 (正在探索方案中)

由于我的 blog 有一个页面是自动生成的,会自动拉取最近更新的十篇文章,将其链接放在首页,这部分是有一些逻辑的。

当然,这样难不倒我,我用 python 写了个git pre commit 脚本,该脚本会计算最新的十篇文章,并更新那篇文章的内容。

为什么会发生这件事?

因为我的这套前后端系统也给我朋友用了,他瞎鸡儿改前端,美名练手,结果前端被他玩坏了,改的东西只改了一半,没时间不改了,(至少我这无法 work,他那没问题),前端无法直接回滚,因为后端接口变更也很大,没有做好版本控制。我给他提了十个bug,他都没修好,实在懒得折腾。导致我一年都没发用这套系统写文章。

于是在某个无聊的下午,我花了一天时间迁移到了 Vercel。很爽!