← 返回项目列表

个人主页

  • Python
  • Flask
  • Jinja2
  • gunicorn
  • systemd
  • nginx

访问站点 GitHub

目标

做一个能长期维护的个人主页:放得下自我介绍、在做的项目和写过的文字,并且十年后还跑得起来

因此刻意做了减法:不加数据库、不加前端框架、不加构建步骤。

结构

  • 后端:Flask + Jinja2 服务端渲染,gunicorn 常驻,systemd 托管。
  • 内容:Markdown 文件 + YAML front matter,存放在部署目录之外,因此发布代码不会覆盖线上写作的内容。
  • 部署:本地仓库 → 裸仓库 → post-receive 钩子检出到运行目录并重启服务,一次 git push 完成上线。
  • 对外:nginx 反向代理到 127.0.0.1:8080,由 systemd 保证崩溃自动拉起。

一些取舍

内容层用「内容树最大修改时间」判断缓存是否失效,而不是定时轮询。好处是写完立刻生效,且在多 worker 下依然正确。

服务只监听 127.0.0.1,不对公网直接暴露端口;同时通过 systemd 的 ProtectHome=read-onlyReadWritePaths 把进程可写范围限制在内容目录内。