Linux 一键升级web项目配置合并脚本例子

4 篇文章 0 订阅

主旨: 利用shell对象变量缓存旧配置,和新的配置进行合并生成正确的配置应用于应用系统,从而达到一键升级。

# 检测环境变量或者参数
function checkWorkspace(){
	if  [ ! -n "$oldWorkspace" ] ;then
		if [ ! -n "$1" ] ;then
			echo [erorr ] your old workspace parameter or env is empty!
			exit
		else
		    oldWorkspace=$1
	    fi
	fi	
}


# 备份当前版本
function backup(){
	rm -rf see20bak 2>&1 >/dev/null
	mkdir see20bak
	\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/biz.properties see20bak/
	\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/jdbc.properties see20bak/
	\cp -a $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/cas.properties see20bak/
	\cp -a $oldWorkspace/server/config/jobServer.xml see20bak/
	\cp -a $oldWorkspace/server/config/properties/dbcp.properties see20bak/
}


# 缓存旧的配置
function cacheConfig(){
	for  line  in  `cat see20bak/biz.properties | awk '{if(/^#/){next}}1' | awk '{print $1$2}'`
	do
		key=`echo $line | cut -d \= -f 1`
	    if [[ $bizList =~ "$key" ]] ;then
			keys=`echo $key | tr "." "-"`
			value=`echo $line | cut -d \= -f 2`
			map["$keys"]=$value
		fi
	done
}


# 合并配置
function combineConfig(){
	rm -rf see20bak/biz.properties 2>&1 >/dev/null
	cd $curWorkspace/tomcat/webapps/
	rm -rf acm && mkdir acm
	unzip -q acm.war -d acm/
	cd $curWorkspace
	cat $curWorkspace/tomcat/webapps/acm/WEB-INF/conf/biz.properties | while read line
	do
		key=`echo "$line" | cut -d \= -f 1`
	    if [[ $bizList =~ "$key" ]] ;then
			keys=`echo $key | tr "." "-"`
			value=$key"="${map["$keys"]}
			value=`echo $value | tr -d '\r'`
			echo "$value" >> see20bak/biz.properties
		else
		    line=`echo "$line" | tr -d '\r'`
			echo "$line" >> see20bak/biz.properties
		fi
	done
}


# upgrade and paste config
function upgradeAndPasteConfig(){
	# jre 
	echo [note ] upgrade jre start ......
	\cp -ra $curWorkspace/jre $oldWorkspace
	echo [note ] upgrade jre end ......
	# server and paste config
	echo [note ] upgrade server start ......
	\cp -ra $curWorkspace/server $oldWorkspace
	cp -a see20bak/jobServer.xml $oldWorkspace/server/config/
	cp -a see20bak/dbcp.properties $oldWorkspace/server/config/properties/
	echo [note ] upgrade server end ......
	# tomcat and paste config
	echo [note ] upgrade tomcat start ...... 
	\cp -ra $curWorkspace/tomcat $oldWorkspace
	cd $oldWorkspace/tomcat/webapps/
	rm -rf acm && mkdir acm
	unzip -q acm.war -d acm/
	\cp -a $curWorkspace/see20bak/biz.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/ 
	\cp -a $curWorkspace/see20bak/jdbc.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/
	\cp -a $curWorkspace/see20bak/cas.properties $oldWorkspace/tomcat/webapps/acm/WEB-INF/conf/
	echo [note ] upgrade tomcat end ...... 
        # startUp.sh shutDown.sh
	echo [note ] upgrade start stop shell start ...... 
	cd $curWorkspace
	\cp -a startUp.sh $oldWorkspace/
	\cp -a shutDown.sh $oldWorkspace/
	echo [note ] upgrade start stop shell end ......
	chmod -R 755 $oldWorkspace/*
}


# 获取上一次的安装路径
if [ -f "/tmp/.see20_home" ] ; then
	oldWorkspace=`cat /tmp/.see20_home`
else
	oldWorkspace=""
fi

# 当前路径
curWorkspace=`pwd`
declare -A map=()
# 需要缓存的配置key
bizList="jobflow.rest.endpoint-dssp.repository.type-dssp.repository.location-dssp.repository.user-dssp.repository.password"
# 检测安装目录
echo [note ] check last install workspace start ......
checkWorkspace $1 
echo [note ] check last install workspace end ......
# 备份配置
echo [note ] back up last config start ......
backup #备份
echo [note ] back up last config end ......
# 缓存可变配置
echo [note ] cache config start ......
cacheConfig 
echo [note ] cache config end ......
# 配置合并
echo [note ] combine config start ......
combineConfig
echo [note ] combine config end ......
# 升级操作
upgradeAndPasteConfig
# 删除备份目录
rm -rf see20bak





关注

关注下方微信公众号,可以及时获取到各种技术的干货哦,如果你有想推荐的帖子,也可以联系我。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜是一种态度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值