2 分钟阅读
本站技术栈速记
- 技术
- Next.js
- Tailwind
一句话技术栈
| 层 | 选择 | 原因 |
|---|---|---|
| 框架 | Next.js 16 App Router | SSR/ISR、Route Handlers、React 19.2 |
| 样式 | Tailwind CSS v4 | 用 CSS 变量做主题切换,零配置 |
| 动效 | motion v12 (前 framer-motion) | whileInView、stagger、useScroll |
| Markdown | unified + remark + @shikijs/rehype | 服务端渲染,双主题代码高亮 |
| 鉴权 | jose + bcryptjs | JWT in httpOnly cookie,单管理员 |
| 存储 | 文件系统 .md |
不引入数据库,备份就是 tar |
| 进程 | systemd | 不装 PM2 |
| 反代 | nginx + certbot | HTTPS + 自动续签 |
为什么不用数据库
单用户博客,文章数量级很小,文件系统完全够用。引入数据库的成本:
- 多一个组件需要维护、备份、升级
- 多一次迁移(schema 变更)
- Markdown 是事实标准,文件就是最朴素的"备份"
等到需要全文搜索、统计、关联推荐时再加 —— 那时再加也不迟。
部署到 47.251.177.147
服务器是阿里云 2C / 1.6G 的 Ubuntu 24.04。原本 443 端口被 OpenVPN 占着,迁到 1194 之后 certbot --nginx 申请证书一气呵成。
部署用一个 deploy.sh:
cd /opt/blog
git pull --ff-only
npm ci --omit=dev
npm run build
systemctl restart blog
一次执行,从代码变更到线上生效。