搭建个人网站踩过的坑汇总

我的第一篇博客

By LiPtP

前言

历经 3 天的调研和测试,终于调通了一个基于 Jekyll 和 Github Pages 的个人网站(https://liptp0000.github.io/)。这个网站采用了Beautiful Jekyll的 Github Pages 模板,它是一个基于 Bootstrap 的 Jekyll 主题,个人感觉很简洁也很好看(比 Github Pages 默认的主题好看多了)。既然是第一篇博客,也想在这里记录一下这一周搭建网站的动机、历程以及踩过的不少的坑,也希望能给后来者一些参考。

动机

最开始的想法

其实是我们伟大的Phigros。为了寻找我帐号的SessionToken,也是想尽了一切办法。当时 Phigros 的成绩查询 bot MiviQ给出的对 iOS 设备的解决方案有二:

  1. 本机全备份,显然不现实。我的 iPad 已经快爆满了,备份一次要接近 3 小时。
  2. 全流量转发,将 http/https 流量全部转发到 PC 上,然后抓包含SessionToken的请求。后来选择了这种方案。

于是一番折腾,在 linux 平台上找到了一个超棒的工具httptoolkit,最终绑定成功了SessionToken。也就是在此时,我萌生了建立一个个人网站的想法。但是万事开头难,也没有想好搭好以后干什么。于是这个想法便被搁置了下来。

为什么突然要建一个网站?

进入大三上学期,发现不论是科研还是日常学习,对这台电脑的需求是越来越多。并且,我需要一个随时随地能看到自己的笔记的平台,同时需要有数学公式、代码高亮等的支持。最开始想过使用知乎、Cnblogs 等现成的博客平台,但是他们的可定制性太低,相较个人网站自由度低得多,于是我还是选择了自己动手。

沉淀

既然要手搓网页,那一定要学前端了。所以我先找了个 3 小时前端速成课懂了一点皮毛,然后就开始手搓了。自然是什么都不会,喜提在 vscode 界面发呆两小时。

那就开始找开源项目,最开始采用了markdown-css工程的 markdown 网页美化(https://github.com/anandzhang/markdown-css)。这个项目是用 node.js 写的,支持把本地的笔记投到 localhost 端口上显示。可是缺点也很明显:

  1. 每次只能投一个笔记,不能将本地的多个 markdown 文件同时渲染上去。
  2. 不支持数学公式显示。
  3. 每次使用需要在本地工程上运行一次 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 的文件,并将域名写入其中。但是,这个过程并不简单,需要注意以下几点:

  1. 域名必须备案,否则绑定域名会失败。
  2. 域名的解析时间需要一段时间,一般是几天,所以绑定域名后,可能需要一段时间才能生效。
  3. 域名的解析记录只能是 A 记录,不能是 CNAME 记录。
  4. 域名的解析记录必须指向 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、小经验等等。

Share: X (Twitter) Facebook LinkedIn