计算机科学 · 建站日记

建站日记 01:这个博客是怎样开始的

记录个人博客从想法、技术选择到首次上线的过程,也整理目前的完成情况和接下来的写作计划。

这是这个博客的第一篇日常记录。

它不是一篇完整的技术教程,而是一次阶段性整理:这个网站为什么出现,我做了哪些选择,目前完成到了哪里,以及接下来准备怎样使用它。

为什么建立这个博客

我目前是地理专业学生,在学习过程中,课程笔记、代码片段等文件主要是放在obsidian里整理。但是时间一长文件库内容量一大,我就很难快速找到以前解决过的问题,或者说抓住我学习关注的重点,也不容易看清自己的学习路径。

因此,我想建立一个长期维护的个人博客,主要记录三类内容:

  1. 地理科学课程与研究方法的学习笔记;
  2. 编程、算法、数据分析和开发工具的使用经验;
  3. 地理与计算交叉领域的项目过程和复盘。

这个网站首先服务于我自己的知识整理,同时也希望其中一部分内容能为遇到相似问题的人提供参考。

我对网站的基本要求

以下且听GPT5.6胡扯: 开始之前,我并不了解完整的网站开发流程,只会一些 Python 基础。为了让网站真正能够长期使用,我给它设定了几个比较实际的要求:

  • 不需要服务器、数据库和后台管理系统;
  • 可以直接用 Markdown 写文章;
  • 能免费部署,并且修改后可以自动更新;
  • 支持分类、标签、归档和本地搜索;
  • 在电脑和手机上都能正常阅读;
  • 项目结构尽量清楚,方便以后逐步学习和维护。

这些要求最终决定了网站的技术方案。

最后的技术选择

网站使用 Astro 和 TypeScript 构建,文章通过 Astro Content Collections 管理。每篇文章都是一个 Markdown 文件,文章标题、发布日期、分类、标签等信息统一写在文件开头。

部署使用 GitHub Pages。代码推送到 GitHub 的 main 分支后,GitHub Actions 会自动完成检查、构建和发布。搜索使用 Pagefind 在构建阶段生成索引,不依赖数据库或第三方搜索服务。

目前使用的主要工具如下:

用途工具
网站框架Astro
开发语言TypeScript
文章格式Markdown / MDX
内容管理Astro Content Collections
静态搜索Pagefind
代码托管GitHub
自动部署GitHub Actions + GitHub Pages
自定义域名lingeocs.com

第一次建站过程

整个过程大致可以分为几个阶段。

首先是在本地建立 Astro 项目,实现首页、文章、分类、标签、归档、项目、关于和搜索等页面。随后补充深浅色模式、文章目录、阅读进度、代码高亮、数学公式、RSS、sitemap 和自定义 404 页面。

网站能够本地运行后,我建立了 GitHub 仓库,并配置 GitHub Actions。这样每次更新文章后,只需要提交并推送代码,线上网站就会自动重新构建。

之后,我购买了 lingeocs.com(小巧思有没有人懂的),在阿里云完成实名认证和 DNS 解析,再把域名绑定到 GitHub Pages。DNS 记录已经正确生效,目前仍在等待 GitHub 完成 HTTPS 证书签发。

为了避免以后忘记操作过程,我还把建站、写文章、发布和排查问题的方法整理成了 Obsidian 文档,主要是能快速调用比如一些预制的提示词来帮我用ai上传或者安全维护之类的。

这次真正理解的事情

以前我会把“网站”理解成浏览器里看到的一个页面。实际动手之后,我才开始区分几个不同层次:

  • Markdown 文件负责保存内容;
  • Astro 负责把内容和组件构建成静态网页;
  • Git 负责记录每次修改;
  • GitHub 保存代码并运行自动部署;
  • GitHub Pages 提供公开访问;
  • DNS 把域名指向网站所在的位置;
  • HTTPS 证书保证浏览器与网站之间的连接安全。

当这些部分被分开理解后,很多报错也不再只是“网站打不开”,而是可以继续判断它发生在内容、构建、部署、DNS 还是证书环节。

目前的状态

现在,网站的基本结构已经完成,自动构建与部署可以正常运行,文章也可以通过 Markdown 管理。站内暂时只有一篇用于检查功能的测试文章,这篇建站日记将成为第一篇正式内容。

网站仍然处于很早的阶段。页面设计、栏目组织和写作方式以后都可能调整,但基本的发布流程已经建立起来了。 还是感慨下GPT神力,我是区。

接下来准备做什么

接下来我准备先完成几件简单的事情:

  1. 等待自定义域名的 HTTPS 证书签发完成;
  2. 发布这篇建站日记,并逐步替换测试内容;
  3. 整理第一篇地理或 GIS 学习笔记;
  4. 在实际写作中继续调整分类、标签和页面细节;
  5. 保持备份,避免在文章和 Git 历史中放入敏感信息。

博客不需要一开始就很完整。现阶段最重要的是让写作和发布流程真正运转起来,然后持续积累内容。 等到我写到第100篇的时候再分享给我的同学朋友吧。

先记录到这里。

参考资料

  1. Astro 官方文档
  2. GitHub Pages 官方文档