前言
哈喽,又是尤利。根据惯例,每次开始服务的新站点我都会写一篇开站札记,记录一下想法和技术。
上次,我带来了自己纯手工编写的博客 ulog
1,但随着部署的服务器到期,它早早地迎来了退役的时刻。
因此,我回到了曾使用过的 hugo
。
简介
目前的技术方案是使用了静态博客系统 hugo
,部署在 GitHub Page
。这是一种再基础不过的部署方式。
简单来说,hugo
是一个 Golang
编写的程序,它能够将 markdown
文件渲染为静态的 HTML
网页文件,然后直接放在 GitHub Page
服务下托管。2
这种部署方式不需要服务器,不需要编程。对我来说,其还有独到的优点:
- 本地编辑。可以在任何本地编辑器写
markdown
文档,编辑体验好。 - 自动化部署。使用
GitHub Action
实现推送后自动更新部署站点。 - 版本管理。得益于
Git
的版本管理,文章的修改历史得到了良好的记录。
既然这么好,为什么我一度抛弃了 hugo
转而自己开发博客系统呢?
- 练手项目,想编写一个自己的长期运行的后端项目。
- 对
git
的使用不够熟练,一度以为所有的文章都必须暴露在公网,无法实现加密等功能。
最根本的,还是我的心境发生了变化。我开始将注意力从读者转移到自身,从形式转移到内容,从琐碎转移到简单。将注意力从外在解放出来,专注于我自己的内容,是这次博客更新的主要目的。
可以注意到,我使用了一个非常简单的主题 typo
。这是有意为之的,便于我将注意力集中于内容创作。当然,我 fork
了官方仓库,并进行了自己的细微修改,如支持文章最后修改时间。
技术细节
唯一值得记录的,是我使用了两个 GitHub
仓库来托管博客。一个是私有的 hugo
程序仓,源 markdown
文件、主题、配置等等都保存在这里。另一个是公开的 public
网页仓,只包含渲染后的网页。
自然,GitHub Page
应当托管 public
网页仓库。我的实现是在私有仓库中创建一个 GitHub Action
,在 push
到 main
分支时自动触发,构建 hugo
网页,然后将编译后的 public
文件夹推送到网页仓库。
这样,能够将草稿、加密之类的源文件隐藏起来,且不包含配置等私密(其实也没有)和冗余的信息。