前言
历经 3 天的调研和测试,终于调通了一个基于 Jekyll 和 Github Pages 的个人网站(https://liptp0000.github.io/
)。这个网站采用了Beautiful Jekyll
的 Github Pages 模板,它是一个基于 Bootstrap 的 Jekyll 主题,个人感觉很简洁也很好看(比 Github Pages 默认的主题好看多了)。既然是第一篇博客,也想在这里记录一下这一周搭建网站的动机、历程以及踩过的不少的坑,也希望能给后来者一些参考。
动机
最开始的想法
其实是我们伟大的Phigros。为了寻找我帐号的SessionToken
,也是想尽了一切办法。当时 Phigros 的成绩查询 bot MiviQ给出的对 iOS 设备的解决方案有二:
- 本机全备份,显然不现实。我的 iPad 已经快爆满了,备份一次要接近 3 小时。
- 全流量转发,将 http/https 流量全部转发到 PC 上,然后抓包含
SessionToken
的请求。后来选择了这种方案。
于是一番折腾,在 linux 平台上找到了一个超棒的工具httptoolkit
,最终绑定成功了SessionToken
。也就是在此时,我萌生了建立一个个人网站的想法。但是万事开头难,也没有想好搭好以后干什么。于是这个想法便被搁置了下来。
为什么突然要建一个网站?
进入大三上学期,发现不论是科研还是日常学习,对这台电脑的需求是越来越多。并且,我需要一个随时随地能看到自己的笔记的平台,同时需要有数学公式、代码高亮等的支持。最开始想过使用知乎、Cnblogs 等现成的博客平台,但是他们的可定制性太低,相较个人网站自由度低得多,于是我还是选择了自己动手。
沉淀
既然要手搓网页,那一定要学前端了。所以我先找了个 3 小时前端速成课懂了一点皮毛,然后就开始手搓了。自然是什么都不会,喜提在 vscode 界面发呆两小时。
那就开始找开源项目,最开始采用了markdown-css
工程的 markdown 网页美化(https://github.com/anandzhang/markdown-css
)。这个项目是用 node.js 写的,支持把本地的笔记投到 localhost 端口上显示。可是缺点也很明显:
- 每次只能投一个笔记,不能将本地的多个 markdown 文件同时渲染上去。
- 不支持数学公式显示。
- 每次使用需要在本地工程上运行一次 node.js,实际使用很不方便,甚至不如直接用浏览器打开本地的 markdown 文件。
当时我并没有放弃这个项目,而是在想如何去解决这些问题,毕竟当个前端练手也不错!于是首先想到用 html 上一个按钮向 node.js 发送请求,重新渲染新的笔记,解决了第一个问题;然后花了一下午为它添加一个数学公式显示的功能,解决了第二个问题(项目 fork:https://github.com/LiPtP0000/markdown-css-with-katex/
)。但是在第三个问题上,我还是卡住了,因为 localhost 端口是由 node.js 监听的,而浏览器并不能访问它,于是必须至少要启动一次 node.js 才能让它监听端口。也就是在这个时候,我意识到,如果我要让这个网站长久地存在,就必须有一台服务器来托管它,于是我又开始寻找服务器相关的开源项目。
服务器
首先想到的是买域名。但是身为贫穷的大学生,买一个服务器实在是没必要的开销(尤其是只想写博客,不需要太多的流量)。于是我又开始寻找免费的服务器。于是想到了 Github Pages,它可以免费托管静态网站,而且可以绑定自己的域名。于是我就开始了我的第一次尝试!
Github Pages 踩过的坑
即便是简单如 Github Pages,我也踩了一些坑。
绑定自定义域名
首先,Github Pages 绑定自定义域名需要在域名服务商那里添加 CNAME 记录,然后在 Github Pages 的仓库根目录下创建一个名为 CNAME 的文件,并将域名写入其中。但是,这个过程并不简单,需要注意以下几点:
- 域名必须备案,否则绑定域名会失败。
- 域名的解析时间需要一段时间,一般是几天,所以绑定域名后,可能需要一段时间才能生效。
- 域名的解析记录只能是 A 记录,不能是 CNAME 记录。
- 域名的解析记录必须指向 Github Pages 的服务器 IP,这个 IP 可以在 Github Pages 的仓库设置中找到。
哇,看不懂,算了。我还是用.github.io 域名吧。然后发现这个域名也上不去了。后来发现是 DNS 缓存刷新需要时间,第二天起来问题就解决了。
使用 jekyll 主题时
看到 Github Pages 内置了一个 Github Actions。它可以自动编译和部署 Jekyll 网站,而且还可以部署到 Github Pages。但是,完全看不懂。我只知道它可以编译网站,但是不知道它是怎么部署的。可能等到后面优化这个网站时再去学吧。
使用 Beautiful Jekyll 主题时
我兴致勃勃地上传了一个 markdown 文件,然后发现无法显示,怎么刷新都没用。结果是 markdown 文件名有一套格式,且需要在表头添加显示信息。于是我又看了一下 Beautiful Jekyll 的文档,发现它要求文件名必须为YYYY-MM-DD-name-of-post.md
,然后在_posts
文件夹下新建一个文件,把 markdown 文件复制过去,再修改表头信息。重新 git push,网站就更新了。
总结与后续规划
这次动手搭网站大概花了一周多的时间,中间还踩了不少的坑,但总算是成功了。后面打算传传 Blog,传传引诱、学习、FPGA、小经验等等。