title: 关于本站

src: posts/2023-05-07-关于本站.md

change log: None

created at: Jan. 24, 2026, 12:39 p.m., last updated: Jan. 24, 2026, 12:39 p.m.

关于本站

这是一个业余时间磕磕碰碰搭建起来的网站。

本文前半部分介绍实现方案和工作流程,后半部分讲我为什么把搭博客这么简单事情搞那么复杂。

实现方案

TODO

工作流程

写博客的工作分为两类:

在用户(我)编辑完文本后,只需提交代码即可,剩下的步骤通过 Jenkins 启动更新网页的流程。

git 仓库托管在家里的 gitea 服务器上,gitea 收到 merge 代码的操作后会告知 JenkinsJenkins 收到请求触发一台树莓派执行 Jeklly 的构建任务。构建完后,把生成的 http 文件用 rsync 同步到 nginx 的目录中。至此自动化流程结束。

其中,Jenkinsnginxfrp 在公网的 docker 容器里。 giteanextcloud 装在了自己一台二手 PC(NUC) 上,Jeklly 装在一台小树莓派上,frp 内网穿透,平时使用 vscode 写博客

这是一个极度冗余的设计:

关于持续集成是什么,可以参考两篇很好的文章:持续集成是什么?(阮一峰)Continuous Integration(Martin Fowler)

关于 Jkelly,Vuepress 等 静态网站生成器 有一个排名网站,可供选择的非常多

关于技术内容就这么多,以下内容是搭建网站的题外话


题外话

对于搭建网站,我不是专业的 web 开发人员,只是兴趣使然。

写这篇博客的时候我在一家芯片 IP 公司工作。职位是软件工程师,有很大一部分时间在搞版本控制和持续集成。

搭这个博客有三大目的:

过程就是一步一步搭建一个博客网站,给自己制定工作流,逐步给博客添加功能,同时反复修改文章。把内容创作,发布审核,版本控制,数据迁移和备份,自动部署通通都搞起来。

其实,很早就有写这篇博文的念头,在读研究生时,随着项目的发展,越来越多的代码和论文让我手足无措。这很让人烦恼,我就在想:“我得找个工具管理这些混乱的文件”。但是我都没做下去,原因也很简单,持续集成这种事情往往是解决问题的配套设施,而不是问题的关键。

当时尝试过 git,可惜完全玩不转。我读的是电路与系统专业,并没有接触过“偏软件”的工程管理模式,甚至连自动化测试是什么都不知道。我会花大量的时间使用 Verilog, Matlab, C 和 labview,在 Windows 系统上编程。当时也能完成项目,现在想起来,因为流程的不严谨,很多实验都是低效甚至有瑕疵的。当然,工作还是能完成,只能说项目的代码量和修改量还是太小了。自己掂量了一下,版本管理不是问题的关键, 我就没再花时间去优化流程和整理文档。

工作后,学习了持续集成的相关方法,我决定在业余时间实践一下。

现在我准备搭建一个博客了,这个事情我打算要长期坚持。所以我准备在这小小的事情上解决一下之前在写论文、写代码上遇到的问题。

我做了一个类比,把需求和问题列在一起:其实工作了之后,在知道软件工程里这都有很好的工具解决这些小问题:

|问题|需求|解决方案|使用的工具| |-|-| -| -| |我不知道这个图纸、文章是怎么一步一步作完的|历史版本都要有|版本控制|git/svn| |理不清各个版本之间的关系|版本要有多个分枝|版本控制|git/svn| |每个版本间差异不大,浪费磁盘。有时候想了解各个版本间的差异|不想有“第1版”“第2版”这样丑丑的文件名|记录差异,而不是完全拷贝|git/svn| |制作的流程重复且繁琐|把精力多放在画图/代码/写文章上,而不是操作设备|持续集成| jenkins/drone | |多人协作困难|需要一个协作平台|代码仓库| github/gitea |

好消息是解决每个问题都有很多方法和工具可以用,坏消息是要开始技术选型了。回归写博客这个话题。首先博客实例放哪?

首先排除博客平台和网站托管,我们选择最折腾的自建网站。

两个月后……(从租服务器,选网址,到认证审核,再熟悉服务器的操作,差不多搞了一个多月)

服务器的问题做好了,首先就学点 Html 写个 Hello World ,然后改变个背景色,成就感满满。当我正准备写第一篇博文的时候。我就写不下去了,体验太差了!既要写文章还要同时考虑排版。虽然这两件事情单独分开做我还是乐意。但混在一起做我觉得不够优雅。同时也开始考虑我应该用什么载体写我的文章:

关掉 WordPress 之后我重新梳理了一些自己对写博客的需求,一些我想要的:

另一些功能是我不想要的:

挑来选去只剩 hugo, vuepress 和 Jeklly 这类静态网站生成工具能满足我的需求了。一开始随便选了个 vuepress,用了半年发现自己花了太多时间在琢磨 vue 的插件怎么玩,又从 vuepress 迁移到了 Jeklly。

最后就是 CI 了,工作中用的是 Jenkins,这次花了点时间学 Drone。部署起 node 项目还是足够应付的。用了几周之后发现对非 Docker 的项目不是很友好,又用回了 Jenkins。

所有的软件都准备好后,我终于可以开开心心地用 markdown 来写博客,专注于写作内容了。而且重要数据全在 git 里,每台电脑里都有副本,很安心。更新博客的时候自己给自己装模做样地审稿,审阅通过了自动更新到网站,流程很顺畅。

就这样下班在家的时候折腾折腾,终于有了第一章的实现方案。写完这篇博文,已经是租服务器第二年的事情了。