shell腳本完成服務(wù)部署部分工作

微服務(wù)架構(gòu)圖(圖片來(lái)源網(wǎng)絡(luò),如有侵權(quán)聯(lián)系我)

好久沒(méi)有更新了,總想著寫(xiě)點(diǎn)東西。

最近工作遇到了這樣的問(wèn)題:測(cè)試環(huán)境的jenkins接二連三的被入侵,多次的環(huán)境搭建讓我身心俱疲。最近的一次環(huán)境受到影響,是因?yàn)槲业沫h(huán)境使用了別個(gè)項(xiàng)目的jenkins,結(jié)果那臺(tái)機(jī)器被入侵后,導(dǎo)致我的環(huán)境無(wú)故受到牽連(不過(guò)這也是我的一個(gè)過(guò)失,在別的機(jī)器上加了自己的配置,沒(méi)有使用時(shí),沒(méi)有刪除我的測(cè)試環(huán)境的相關(guān)配置)。

受影響的服務(wù)器進(jìn)行了重裝。一是真的真的沒(méi)有時(shí)間配置jenkins,二是對(duì)網(wǎng)上下載的jenkins包的安全性表示懷疑,于是考慮自己手動(dòng)完成服務(wù)的發(fā)布

在我發(fā)布項(xiàng)目的時(shí)候發(fā)現(xiàn)有些工作是重復(fù)的,于是果斷寫(xiě)了簡(jiǎn)單的shell腳本,完成部分服務(wù)部署工作

一、服務(wù)部署目錄結(jié)構(gòu)

服務(wù)的目錄結(jié)構(gòu)大概就是,以服務(wù)名為一個(gè)文件夾,文件夾下有start.sh腳本和stop.sh腳本,使用stop.sh殺死服務(wù)進(jìn)程,使用start.sh啟動(dòng)服務(wù)。功能比較簡(jiǎn)單

服務(wù)目錄結(jié)構(gòu)

二、編寫(xiě)腳本思路

1、有一個(gè)文件叫dirFile,里面記錄著這臺(tái)服務(wù)器需要部署的服務(wù)名稱。start.sh和stop.sh文件,分別是開(kāi)啟服務(wù)和殺死服務(wù)的命令,服務(wù)對(duì)應(yīng)的名字默認(rèn)為package_name 。注意:這兩個(gè).sh文件的權(quán)限是可讀可寫(xiě)可執(zhí)行

2、讀取dirFile里的服務(wù)名,創(chuàng)建文件夾

3、將start.sh和stop.sh拷貝到創(chuàng)建好的文件夾中,替換.sh文件中的package_name 值,為所在文件夾的名字

三、原代碼

dirFile文件保存服務(wù)的名稱

thor-bigdata
thor-bus
thor-content
thor-multilingual
thor-quest
thor-task
thor-user
thor-version
thor-wallet

start.sh腳本

#啟動(dòng)服務(wù)
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

#關(guān)閉進(jìn)程
kill -9 `ps axu | grep "package_name.jar" | grep -v grep | awk '{print $2}'`  

#進(jìn)入服務(wù)包所在文件夾
cd /opt/local/bao/package_name  

#刪除文件
rm -rf package_name.jar 

build.sh主要程序邏輯代碼

#!/bin/bash


while read line
do
  
  if [ ! -d "$line" ];then
    echo "創(chuàng)建文件夾" $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'

代碼文件結(jié)構(gòu)

四、寫(xiě)在最后

jenkins環(huán)境重新部署還有其他方法,比如jenkins api

但是我想說(shuō)的依然是那句話,我們是測(cè)試人員,我們要做的事不是“點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)......”。當(dāng)你開(kāi)始重復(fù)的做一件事的時(shí)候,你可以開(kāi)始寫(xiě)代碼了。

與君共勉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容