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 代码的操作后会告知 Jenkins,Jenkins 收到请求触发一台树莓派执行 Jeklly 的构建任务。构建完后,把生成的 http 文件用 rsync 同步到 nginx 的目录中。至此自动化流程结束。
其中,Jenkins、nginx 和 frp 在公网的 docker 容器里。 gitea 和 nextcloud 装在了自己一台二手 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 里,每台电脑里都有副本,很安心。更新博客的时候自己给自己装模做样地审稿,审阅通过了自动更新到网站,流程很顺畅。
就这样下班在家的时候折腾折腾,终于有了第一章的实现方案。写完这篇博文,已经是租服务器第二年的事情了。