本博客基于 VuePress 框架与 VuePress-Theme-Hope 主题搭建。由于主题内置的自动部署功能主要支持 GitHub Pages,而笔者期望将博客部署至个人轻量应用服务器并实现自动化流程,因此开展了本项目的实践。
项目概述
需求分析
本项目旨在实现个人博客的自动化部署与高效运维,具体需求如下:
- 功能需求:博客源代码通过 GitHub 私有仓库进行托管,并利用 GitHub Actions 实现持续集成与持续部署(CI/CD)。当代码推送至主分支后,应自动触发并完成完整的部署流程。
- 安全需求:在 GitHub Actions 的自动化部署流程中,需要对服务器进行安全的身份验证。为遵循最小权限原则,部署过程中使用的用户凭据不应具备 root 权限。
- 性能需求:自动化部署过程需要具备高效率,以缩短从代码提交到线上生效的延迟。同时,应降低对服务器资源的消耗,将服务器的核心性能用于处理用户访问请求,而非博客内容的构建与管理。
- 协议升级需求:启用 HTTP/2 或 HTTP/3 协议支持,利用其多路复用、头部压缩等新特性,显著减少页面加载延迟,提升在复杂网络环境下的用户访问体验。
技术选型
基于上述需求,本项目选定的技术栈如下:
- 持续集成/持续部署(CI/CD):采用 GitHub Actions 作为核心自动化工具,实现代码提交后自动触发构建和部署工作流。
- Web 服务与反向代理:利用 Docker 对 Nginx 进行容器化封装,实现一个轻量且高效的 HTTP 反向代理服务。此方式简化了部署和管理,并提高了服务的隔离性。
- HTTPS 与证书管理:通过 Certbot 实现 SSL/TLS 证书的自动申请、配置与续期,确保网站的 HTTPS 连接长期有效且无需人工干预。
- 服务管理:使用 systemd 来管理 Docker 守护进程和 Certbot 的自动续期计时器,以保证服务的稳定运行和管理的便捷性。
2025/7/25大约 11 分钟