800 字
4 分钟
你好,世界
为什么写博客?
在这个信息爆炸的时代,写博客似乎有点”复古”。但我觉得,写博客有几个不可替代的价值:
- 整理思路 — 把想法写下来的过程,就是理清思路的过程。很多我以为自己懂了的东西,动笔之后才发现漏洞百出。
- 知识沉淀 — 写过的东西比看过的东西记得更牢。半年后翻回来,还能顺着当时的记录把环境重新跑起来。
- 帮助他人 — 你踩过的坑,别人可能正在踩。搜索解决方案时命中一篇详细的踩坑记录,那种感激是发自内心的。
所以就有了这个站——鸢尾之语,写代码,也写生活。
这个博客是怎么搭起来的?
整站基于 Astro 构建,在 Fuwari 模板的基础上做了大量定制。选择 Astro 的原因:
- 快 — 内容在构建期渲染成纯静态页面,服务器只需要 nginx 托管,2 核 2G 的小机器也毫无压力
- 灵活 — 需要交互的地方(评论、动态流)单独用 Svelte 组件做岛屿式水合
- 简单 — Markdown 写文章,Git 管理内容,其他时间都可以用来写字
在模板之外,自己动手加了这些东西:
| 功能 | 实现方式 |
|---|---|
| 评论系统 | Node.js 原生 HTTP 服务,支持回复、点赞、图片和语音 |
| 动态(朋友圈) | 首页动态流 + 独立详情页,数据存在服务器 JSON 文件里 |
| 后台管理 | 网页版管理台,Gitee/GitHub OAuth 登录,双栏 Markdown 编辑器 |
| 一键部署 | 后台点一下,服务器自动 git pull + 构建 |
部署在一台阿里云 2 核 2G 的 ECS 上,nginx 反代静态页面和两个 API 服务,HTTPS 证书用 certbot 自动续期。域名 theywh.me。
上线前后踩过的坑
说是”静态博客”,真要跑起来还是有不少坑,捡三个印象最深的:
-
Swup 页面缓存导致的”永远加载中”。站内跳转用了 Swup 做无刷新切换,但它缓存了旧页面,文章详情页一直转圈。最后的解法是给详情页链接加
data-no-swup,强制走完整加载——牺牲一点丝滑,换取稳定。 -
动态图片 404。nginx 的静态文件正则
location把/api/uploads/的图片请求截胡了,直接去磁盘找文件当然找不到。把 API 上传目录的正则规则挪到静态规则前面就好了。nginx 的 location 匹配顺序是个经典暗坑。 -
一个未定义函数干崩整个列表。后台动态列表渲染时调用了一个
timeAgo函数,结果它根本没定义,JS 一报错整个列表直接空白。这种”半成品代码上线”的问题,写个小的冒烟测试就能提前发现。
接下来的计划
- 搭好博客,写下第一篇文章
- 写几篇技术笔记(Flink 流处理、图像去雨、机械臂仿真都写了)
- 记录一些读书心得
- 分享生活中的小发现
希望这个博客能一直写下去。🚀