返回分享列表
构建流程 · 2026-10-16

从内容文件到 Nginx:个人品牌站的可重复构建流程

把内容源、模板、资源、构建校验和部署目录串成一条可重复的生产线,减少手工改页面带来的风险。

从内容文件到 Nginx:个人品牌站的可重复构建流程配图

把网站当成一条内容生产线

一个可靠的构建流程应该有明确输入和输出。输入是 `data/` 中的配置、`content/` 中的 Markdown、`templates/` 中的页面模板和 `assets/` 中的资源;输出是 `/var/www/html/` 中可直接访问的静态文件。脚本只负责读取、渲染、复制和检查,不应该成为文章正文的仓库。

我把文章分成两部分:`posts.json` 保存日期、分类、标题、slug、阅读时长、摘要和封面;`content/blog/<slug>/index.md` 保存正文。列表页只读取元数据,文章详情页再读取 Markdown。新增文章时不会修改构建脚本,也不会影响已有文章的地址。

模板负责结构,配置负责事实

`layout.html` 负责 head、导航、页脚、分析脚本和二维码弹窗;`home.html`、`page.html`、`article.html` 负责页面类型;组件模板负责作品卡片、理念卡片、分享卡片和成长时间轴。标题、域名、备案号、菜单、社交入口等事实来自 JSON。

这种分工有一个实际好处:当视觉设计调整时,只修改模板和 CSS;当个人信息、作品和文章更新时,只修改数据和正文。发布过程不会因为内容编辑而意外改坏 Nginx 配置。

增量构建与清理构建

默认命令采用增量模式,只覆盖这次生成的文件并保留已有内容,适合日常更新和排查。确认需要删除旧页面或旧资源时,再使用 `--clean`。清理模式会删除发布目录中的旧产物,但专门保留 ACME 验证目录。

清理模式之后不能只看命令是否返回成功,还要检查首页、favicon、Logo、robots、sitemap、404、CSS、JavaScript 和 ACME 目录是否都存在。当前项目把这些清单放在 `data/build.json`,构建结束时自动校验,缺失就失败。

一次完整发布流程

先在本地或服务器运行 `python3 scripts/build.py`,确认构建统计和校验结果;再检查生成的 sitemap 是否包含新页面,文章链接、图片路径和联系入口是否有效。上传源目录后,可以在服务器重新构建,也可以上传已验证的 `/var/www/html/`。

Nginx 更新前运行 `sudo nginx -t`,确认通过后执行 `sudo systemctl reload nginx`。最后用首页、文章页、作品页、联系页和 HTTPS 请求做一次冒烟检查。证书续期由 acme.sh 独立负责,站点构建不触碰证书目录。

让内容保持精品

构建自动化解决的是稳定性,不会自动产生好内容。每篇文章仍然要围绕一个明确问题,说明背景、判断、实践步骤、限制和结果。数量可以少,但每一篇都应该能代表一种真实的思考或实践。

当内容源、模板、构建和发布边界清楚后,个人品牌站就不再是一次性网页,而是一套可以长期维护、持续验证个人能力的系统。