第五部分 总结与展望
一、实践回顾
本次实践围绕一个静态站点的完整生命周期展开,从 Web 运行环境搭建、项目与代码库初始化、内容撰写,到 Web 服务器部署与 CI/CD 自动化发布。通过 Docker 容器化隔离运行环境、Nginx 提供静态资源服务、rsync 完成增量同步、CloudFlare Pages 实现 Serverless 自动部署。
二、配置的问题
在整个流程中,最耗费精力的环节并非静态站点本身的构建,而是 Docker 容器的配置,从零开始的配置较为麻烦,主要包括:
- 容器需要同时映射
22(SSH)与80(HTTP)端口到宿主机的30022、30080,并使用--privileged=true以保证systemd/service类命令能正常工作;权限不足会导致service nginx start失败,权限过高又存在安全隐患。 - 基础镜像
debian:latest几乎不预装任何工具,openssh-server、rsync、nginx、net-tools、vim均需手动安装。 - 在普通容器中
service nginx start启动的服务会随容器重启而丢失,若希望其开机自启,又需要引入systemd作为入口进程,需要在可维护性与架构简洁性之间作出取舍。 - 宿主机端口已映射但浏览器仍无法访问时,需要依次确认容器内 Nginx 是否监听、
sites-enabled/default是否被覆盖等,排查较为麻烦且黑箱。
三、技术展望
当前的部署方案仍有明确的改进方向:
- 可以将临时容器升级为由
Dockerfile+docker-compose.yml管理的声明式服务,docker-compose up即可拉起完整环境。 - 可以将本地、容器、CI 三套环境统一为同一份构建产物,消除不能部署的风险。
四、心得体会
- 在部署时候后很多细节需要注意,一不小心可能就会出问题。
- 最深的感受是,“能用”和“能复现”是两回事。把流程写成脚本、记成文档,看起来是绕了远路,其实是让自己的部署方法有了可参考性,是在给未来的自己省时间。
- 还有一个收获是排查问题的思路变更加清晰了。
五、意见与建议
- 可以开发一些交互式学习工具来让同学们更快掌握操作方法等。
- 可以引入一些更加新的工具例如 Docker 等
整体而言,本次实践的价值不仅仅在于搭建出某一个站点,更为后续更复杂的工程化实践建立了可参照的操作方式。