技术导语: 之前有篇文章已经基本介绍了应用服务开机自启的实现方法,本文着重基于脚本管理方便性、脚本内容通用性、脚本应用环境适配性三大方面的考虑,编写自启脚本,达到一个脚本适用所有应用服务自启的效果。
关于运维工作的最佳实践
在接到这个需求的初期,就在思考如何最小能力成本地编写脚本,包括后续的脚本维护。主要有如下几大难题。
- 应用部署路径不同
- 应用启动指令不同
- 应用部署环境不同
- 应用部署用户不同
针对三个难题的解决方案更多的还是从部署规范上去思考。
应用部署路径不同
前提: 统一部署路径规范,所有应用部署在同一级目录,每个应用预先定义好路径名称。
脚本实现: 可以通过遍历的方式获取到所有应用的部署路径。
应用启动指令不同
前提: 理想情况下可以统一启动指令,特殊情况下允许不同启动命令的存在。
脚本实现: 可以在自启脚本里面通过判断启动脚本是否存在获知启动指令。
应用部署环境不同
前提: 当前主流的环境分类:开发、测试、预生产、生产。不同环境可能导致启动参数不同,其实也可以归类为启动指令不同。
脚本实现: 通过传参的方式鉴别不同环境。
应用部署用户不同
前提: 为了实现应用间隔离,行业内做法一般是不同应用通过不同的用户部署,从安装部署到启停均适用应用用户进行操作。
脚本实现: 可以在自启脚本里面获取部署目录所属用户。
基于解决这三大问题的逻辑,编写脚本如下:
vi reboot_start_all.sh
#!/bin/bash
cd /app/deploy