在代码与晨光之间,记录 C++、网络与系统世界的思考。
晨's Blog 是一个采用 Hexo 式发布模型的 Drogon 动态博客。文章以本地 Markdown 文件为唯一内容源,提交并推送到 GitHub 后由 Actions 验证并构建容器。网站不提供文章管理后台,访客只能阅读内容。
content/posts/*.md -> git push -> GitHub Actions -> GHCR 容器
- Drogon:路由、服务端渲染、搜索、分类、标签、归档、RSS 和站点地图。
- Markdown:文章唯一数据源,使用严格 JSON Front Matter。
- GitHub:代码与内容版本、构建触发和容器发布。
- PostgreSQL:不再是博客运行依赖。
- 管理后台:不存在,也没有文章写入 API。
阅读端还提供文章目录、阅读进度、代码复制、上一篇/下一篇、相关文章、深浅主题、SEO 元数据和自定义 404。设计取舍与同类项目对比见 docs/BLOG_PROJECT_COMPARISON.md。
$env:VCPKG_ROOT = 'G:\tool\vcpkg'
cmake --preset windows-debug
cmake --build --preset windows-debug
ctest --preset windows-debug启动:
.\build\windows-debug\Debug\drogon_blog.exe config\config.dev.json访问 http://127.0.0.1:8080,健康检查为 http://127.0.0.1:8080/health。
也可以使用 Docker:
docker compose up --build -d- 在
content/posts新建<slug>.md,格式见content/README.md。 - 本地启动博客并检查文章、分类、标签和代码块。
- 提交并推送:
git add content/posts && git commit && git push。 .github/workflows/publish.yml会验证 Docker 构建,并在main分支推送时发布到ghcr.io/<owner>/<repo>。- 部署主机从 GHCR 拉取新镜像并重启后,文章才会显示。
复制 config/config.example.json 的 GitHub 字段到实际配置:
site.github.repository_url:仓库网页地址。site.github.branch:文章所在分支,默认main。 GitHub Pages 不能运行 Drogon;Drogon 容器需要部署在支持 Docker 的主机上。