shell脚本完成服务部署部分工作
2019-02-25 本文已影响881人
西西的博客
![](https://img.haomeiwen.com/i11669610/f1f76638a835dd03.png)
好久没有更新了,总想着写点东西。
最近工作遇到了这样的问题:测试环境的jenkins接二连三的被入侵,多次的环境搭建让我身心俱疲。最近的一次环境受到影响,是因为我的环境使用了别个项目的jenkins,结果那台机器被入侵后,导致我的环境无故受到牵连(不过这也是我的一个过失,在别的机器上加了自己的配置,没有使用时,没有删除我的测试环境的相关配置)。
受影响的服务器进行了重装。一是真的真的没有时间配置jenkins,二是对网上下载的jenkins包的安全性表示怀疑,于是考虑自己手动完成服务的发布
在我发布项目的时候发现有些工作是重复的,于是果断写了简单的shell脚本,完成部分服务部署工作
一、服务部署目录结构
服务的目录结构大概就是,以服务名为一个文件夹,文件夹下有start.sh脚本和stop.sh脚本,使用stop.sh杀死服务进程,使用start.sh启动服务。功能比较简单
![](https://img.haomeiwen.com/i11669610/bdcaa5c466a0df09.png)
二、编写脚本思路
1、有一个文件叫dirFile,里面记录着这台服务器需要部署的服务名称。start.sh和stop.sh文件,分别是开启服务和杀死服务的命令,服务对应的名字默认为package_name 。注意:这两个.sh文件的权限是可读可写可执行
2、读取dirFile里的服务名,创建文件夹
3、将start.sh和stop.sh拷贝到创建好的文件夹中,替换.sh文件中的package_name 值,为所在文件夹的名字
三、原代码
dirFile文件保存服务的名称
thor-bigdata
thor-bus
thor-content
thor-multilingual
thor-quest
thor-task
thor-user
thor-version
thor-wallet
start.sh脚本
#启动服务
nohup /usr/local/jdk/jdk-11.0.1/bin/java -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m -XX:MaxNewSize=256m -jar /opt/local/bao/package_name/package_name.jar --spring.profiles.active=qa >>/tmp/package_name.log &
#输出日志
tail -f /tmp/package_name.log
stop.sh
#关闭进程
kill -9 `ps axu | grep "package_name.jar" | grep -v grep | awk '{print $2}'`
#进入服务包所在文件夹
cd /opt/local/bao/package_name
#删除文件
rm -rf package_name.jar
build.sh主要程序逻辑代码
#!/bin/bash
while read line
do
if [ ! -d "$line" ];then
echo "创建文件夹" $line
mkdir /opt/local/bao/$line
cp stop.sh /opt/local/bao/$line/
sed -i "s/package_name/$line/g" /opt/local/bao/$line/stop.sh
cp start.sh /opt/local/bao/$line/
sed -i "s/package_name/$line/g" /opt/local/bao/$line/start.sh
fi
done < '/opt/local/build/dirFile'
![](https://img.haomeiwen.com/i11669610/79aa1296be2e4dd3.png)
四、写在最后
jenkins环境重新部署还有其他方法,比如jenkins api
但是我想说的依然是那句话,我们是测试人员,我们要做的事不是“点点点点点......”。当你开始重复的做一件事的时候,你可以开始写代码了。
与君共勉。