服务部署用Linux脚本

批量运行 batchRun.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# app 目录
appDir='/opt/app'

# tomcat 应用列表
tomcatApps=(tomcat-opms tomcat-wechat-h5 tomcat-9.0.8-crm)
# spring 应用列表
springApps=(app-business-api-1.0 crm-timed-task flow-server hs-gateway opms-server crm-server msg-distribute settle-server wechat-businessServer system-server staff-legal-bsp-1.1.jar)

# 启动模式
action=$1

app_status() {
	if [ ! -d "${appDir}/$1" ]; then
		return 2
	else
		status=`ps -ef | grep $1 | grep -v grep`
		if [ -n "$status" ]; then
			return 0
		else
			return 1
		fi
	fi
}

run_status() {	

	 echo -e  "\033[33m 检查程序状态  \033[0m"
	 for app in `ls ${appDir}`
	 do 
	    app_status $app
		ret=$?
		if [ $ret -eq 0 ]; then
			echo -e "\033[32m 应用[$app]已启动!\033[0m"
		elif [ $ret -eq 1 ]; then
			echo -e "\033[33m[$app]已停止!\033[0m"
		elif [ $ret -eq 2 ]; then
			echo -e "\033[31m 应用[$app]不存在 \033[0m"
		fi
	 done
	 
	cd ${curDir}
}

# 停止所有spring app
run_stop() {

	 echo -e  "\033[33m 关闭tomcat服务  \033[0m"
     for line in `ls ${appDir}`
     do 
       if [ -f "${appDir}/${line}/bin/shutdown.sh" ]; then
         echo -e  "\033[33m 正在关闭服务${line}  \033[0m"
         cd  ${appDir}/${line}/bin 
         ./shutdown.sh
     fi
     done


    echo -e "\033[33m  关闭spring服务 \033[0m"
    for line in `ls ${appDir}`
	do 
	  if [ -f "${appDir}/${line}/bin/run.sh" ]; then
        echo -e  "\033[33m 正在关闭服务${line}  \033[0m"
	    cd  ${appDir}/${line}/bin 
	    ./run.sh stop 
	fi
	done

    echo -e "\033[32m  应用启动结束 \033[0m"  

	cd ${curDir}
}

# 启动所有spring app
run_start() {
    
     echo -e  "\033[33m 启动tomcat服务  \033[0m"
     for line in `ls ${appDir}`
     do 
       if [ -f "${appDir}/${line}/bin/startup.sh" ]; then
         echo -e  "\033[33m 正在启动服务${line}  \033[0m"
         cd  ${appDir}/${line}/bin 
         ./startup.sh
     fi
     done


    echo -e "\033[33m  启动spring服务 \033[0m"
    for line in `ls ${appDir}`
	do 
	  if [ -f "${appDir}/${line}/bin/run.sh" ]; then
        echo -e  "\033[33m 正在启动服务${line}  \033[0m"
	    cd  ${appDir}/${line}/bin 
	    ./run.sh start 
	fi
	done

    echo -e "\033[32m  应用启动结束 \033[0m"  

	cd ${curDir}
}

# 重启所有spring app
run_restart() {
	run_stop
	run_start
	cd ${curDir}
}

# 启动服务
run_serviceStart(){
    echo -e  "\033[33m 正在启动zookeeper  \033[0m"
    service zookeeper start
    echo -e  "\033[33m 正在启动redis  \033[0m"
    service redis start
	
}

case "$action" in
    status|start|stop|restart)
        run_$action
        ;;
    *)
        echo "Arguments error! [${action}]"
        echo "Usage: `basename $0` [install|uninstall|status|start|stop|restart]"
        ;;
esac

运行全部runAll.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# app 目录
appDir='/opt/app'

# tomcat 应用列表
tomcatApps=(tomcat-crm tomcat-wechat-h5 tomcat-opms)
# spring 应用列表
springApps=(asset-manage-bsp-1.0 staff-legal-bsp-2.0 fixed-income-bsp-1.0 app-business-api-1.0 crm-server crm-timed-task flow-server process-server mail-server opms-server wechat-tokenServer wechat-gateWay-inner hs-gateway wechat-businessServer msg-distribute system-server hr-server app-stock-analysis)

# 启动模式
action=$1

app_status() {
	if [ ! -d "${appDir}/$1" ]; then
		return 2
	else
		status=`ps -ef | grep $1 | grep -v grep`
		if [ -n "$status" ]; then
			return 0
		else
			return 1
		fi
	fi
}

spring_app_uninstall() {
	spring_app_stop $1
	if [ -d "${appDir}/$1" ]; then
		cd ${appDir}
		rm -rf $1
		echo "应用[$1]卸载成功"
	else
		echo "应用[$1]无需卸载"
	fi
}

spring_app_install() {
	if [ ! -f "${appDir}/$1.tar.gz" ]; then
		echo "安装包[$1.tar.gz]不存在,已忽略"
		return
	fi
	echo "1. 卸载旧的应用[$1]"
	spring_app_uninstall $1
	echo "2. 安装应用[$1]"
	cd ${appDir}
	tar -xf $1.tar.gz
	rm -rf $1.tar.gz
	echo "3. 应用[$1]安装完成"
	
}

tomcat_app_uninstall() {
	tomcat_app_stop $1
	if [ -d "${appDir}/$1/webapps" ]; then
		cd ${appDir}/$1/webapps
		if [ -f $1 ]; then
			rm -rf $1
		fi
		if [ -f "$1.war" ]; then
			rm -rf $1.war
		fi
		echo "应用[$1]卸载成功"
	else
		echo "应用[$1]无需卸载"
	fi
}

tomcat_app_install() {
	if [ ! -f "${appDir}/$1.war" ]; then
		echo "安装包[$1.war]不存在,已忽略"
		return
	fi
	echo "1. 卸载旧的应用[$1]"
	tomcat_app_uninstall $1
	echo "2. 安装应用[$1]"
	cd ${appDir}
	cp $1.war $1/webapps
	rm -rf $1.war
	echo "3. 应用[$1]安装完成"
}

spring_app_start() {
	app_status $1
	ret=$?
	if [ $ret -eq 1 ]; then
		echo "启动应用[$1]"
		cd ${appDir}/$1/bin
		./run.sh start
	elif [ $ret -eq 0 ]; then
		echo "应用[$1]已启动!"
	elif [ $ret -eq 2 ]; then
		echo "应用[$1]不存在"
	fi
	
}

spring_app_stop() {
	app_status $1
	ret=$?
	if [ $ret -eq 0 ]; then
		echo "停止应用[$1]"
		cd ${appDir}/$1/bin
		./run.sh stop
		echo "应用[$1]已停止!"
	elif [ $ret -eq 1 ]; then
		echo "应用[$1]已停止!"
	elif [ $ret -eq 2 ]; then
		echo "应用[$1]不存在"
	fi
}

tomcat_app_start() {
	app_status $1
	ret=$?
	if [ $ret -eq 1 ]; then
		echo "启动应用[$1]"
		cd ${appDir}/$1/bin
		./startup.sh
	elif [ $ret -eq 0 ]; then
		echo "应用[$1]已启动!"
	elif [ $ret -eq 2 ]; then
		echo "应用[$1]不存在"
	fi
}

tomcat_app_stop() {
	app_status $1
	ret=$?
	if [ $ret -eq 0 ]; then
		echo "停止应用[$1]..."
		cd ${appDir}/$1/bin
		./shutdown.sh
	elif [ $ret -eq 1 ]; then
		echo "应用[$1]已停止!"
	elif [ $ret -eq 2 ]; then
		echo "应用[$1]不存在"
	fi
}

run_install() {
	for app in ${springApps[*]}
	do
		spring_app_install $app
	done
	
	for app in ${tomcatApps[*]}
	do
		tomcat_app_install $app
	done
	cd ${curDir}
}

run_uninstall() {
	for app in ${springApps[*]}
	do
		spring_app_uninstall $app
	done
	
	for app in ${tomcatApps[*]}
	do
		tomcat_app_uninstall $app
	done
	cd ${curDir}
}

run_status() {
	for app in ${springApps[*]}
	do
		app_status $app
		ret=$?
		if [ $ret -eq 0 ]; then
			echo "应用[$app]已启动!"
		elif [ $ret -eq 1 ]; then
			echo "应用[$app]已停止!"
		elif [ $ret -eq 2 ]; then
			echo "应用[$app]不存在"
		fi
	done
	
	for app in ${tomcatApps[*]}
	do
		app_status $app
		ret=$?
		if [ $ret -eq 0 ]; then
			echo "应用[$app]已启动!"
		elif [ $ret -eq 1 ]; then
			echo "应用[$app]已停止!"
		elif [ $ret -eq 2 ]; then
			echo "应用[$app]不存在"
		fi
	done
	cd ${curDir}
}

# 停止所有spring app
run_stop() {
	for app in ${springApps[*]}
	do
		spring_app_stop $app
	done

	for app in ${tomcatApps[*]}
	do
		tomcat_app_stop $app
	done
	cd ${curDir}
}

# 启动所有spring app
run_start() {
	for app in ${springApps[*]}
	do
		spring_app_start $app
	done
	
	for app in ${tomcatApps[*]}
	do
		tomcat_app_start $app
	done
	cd ${curDir}
}

# 重启所有spring app
run_restart() {
	for app in ${springApps[*]}
	do
		spring_app_stop $app
		spring_app_start $app
	done
	
	for app in ${tomcatApps[*]}
	do
		tomcat_app_stop $app
		tomcat_app_start $app
	done
	cd ${curDir}
}

case "$action" in
    install|uninstall|status|start|stop|restart)
        run_$action
        ;;
    *)
        echo "Arguments error! [${action}]"
        echo "Usage: `basename $0` [install|uninstall|status|start|stop|restart]"
        ;;
esac

备份backup.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# app 目录
appDir='/opt/commServer'

# 启动模式
action=$1

# 解压所有
run_unpack() {
	echo -e  "\033[33m 压缩服务  \033[0m"
     for line in `ls ${appDir}`
     do 
         echo -e  "\033[33m 正在解压服务 ${line}  \033[0m"
         cd  /opt/backup
         cp ${line}.tar.gz  ${appDir}/${line}.tar.gz
         tar -xf ${appDir}/${line}.tar.gz
     done
	 
    echo -e "\033[32m  应用解压结束 \033[0m"  
	cd ${curDir}
}

# 压缩备份所有app
run_pack() {
	if [ ! -d "/opt/backup" ];then
	  mkdir /opt/backup
	else
	  rm -rf /opt/backup/*
	fi	
	
    echo -e  "\033[33m 压缩服务  \033[0m"
     for line in `ls ${appDir}`
     do 
         echo -e  "\033[33m 正在压缩服务 ${line}  \033[0m"
         cd  ${appDir}
         tar -zcvf ${line}.tar.gz --exclude=${line}/logs --exclude=${line}/log ${line}
		 mv ${line}.tar.gz /opt/backup/${line}.tar.gz
     done
    echo -e "\033[32m  应用压缩结束 \033[0m"  
}


case "$action" in
     pack|unpack|installOpenSSL)
        run_$action
        ;;
    *)
        echo "Arguments error! [${action}]"
        echo "Usage: `basename $0` [pack|unpack]"
        ;;
esac

安装install.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# app 目录
appDir='/opt/commServer'

# 启动模式
action=$1


# 安装openssl
run_openssl() {
    cd /opt/backup
    tar xzvf ./openssl-1.1.1g.tar.gz
	cd ./openssl-1.1.1g
	./config --prefix=/usr/local/openssl
	./config -t
	make && make install
	cd /usr/local
	ldd /usr/local/openssl/bin/openssl
	which openssl
	openssl version -a
	mv /usr/bin/openssl /usr/bin/openssl.bak
	mv /usr/include/openssl /usr/include/openssl.bak
	ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
	ln -s /usr/local/openssl/include/openssl /usr/include/openssl
	echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
	ldconfig -v
	ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
	ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
	echo "openssl安装完成"
	cd ${curDir}
}

# 安装nginx 1.19.0
run_nginx(){
	cd /opt/backup
	tar vzxf ./nginx-1.19.0.tar.gz
	cd ./nginx-1.19.0
	./configure --prefix=/opt/commServer/nginx-1.19.0 --with-openssl=/usr/local/openssl --with-http_ssl_module 
	make && make install
	echo "nginx安装完成"
	cd ${curDir}
}


case "$action" in
    openssl|nginx)
        run_$action
        ;;
    *)
        echo "Arguments error! [${action}]"
        echo "Usage: `basename $0` [openssl|nginx]"
        ;;
esac

安装install-app.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# app 目录
appDir='/opt/app'

# 启动模式
action=$1
# 应用名
app_name=$2

app_uninstall() {
	if [ -d "${appDir}/$1" ]; then
		${appDir}/$1/bin/run.sh stop
		cd ${appDir}
		rm -rf $1
		echo "应用[$1]卸载成功"
	else
		echo "应用[$1]无需卸载"
	fi
}

app_install() {
	if [ ! -f "${appDir}/$1.tar.gz" ]; then
		echo "安装包[$1.tar.gz]不存在,已忽略"
		return
	fi
	echo "1. 卸载旧的应用[$1]"
	app_uninstall $1
	echo "2. 安装应用[$1]"
	cd ${appDir}
	tar -xf $1.tar.gz
	rm -rf $1.tar.gz
	echo "3. 应用[$1]安装完成"
}

app_start() {
	${appDir}/$1/bin/run.sh start
}

if [ $# -ne 2 ];then
	echo "Arguments error!"
	echo "Usage: `basename $0` [install|uninstall|status|start|stop|restart] [app_name]"
	exit 1	
fi

case "$action" in
    install|uninstall|start)
		app_$action $app_name
        ;;
    *)
        echo "Arguments error!"
		echo "Usage: `basename $0` [install|uninstall|start|stop] [app_name]"
        ;;
esac

切换 switch.sh

#!/bin/bash

# 当前目录
curDir=`pwd`

# nginx 配置目录
nginxConfDir='/opt/commServer/nginx-1.12.1/conf'

# 工具目录
utilDir='/opt/sgUtils/sgzt'

# 灾备切换动作
action=$1

# 重新配置nginx
reConfigNginx() {
	echo "重新配置nginx"
	cd ${nginxConfDir}
	if [ ! -d "${nginxConfDir}" ]; then
		echo "没有安装nginx,已忽略"
		exit -1
	fi
	if [ ! -d "vhosts_${action}" ]; then
		echo "${nginxConfDir}中无目录vhosts_${action},稍后请手动替换"
		exit -1
	fi
	service nginx stop
	echo "替换配置文件..."
	if [ ! -d "vhosts_${action}" ]; then
		echo "替换配置文件失败:${nginxConfDir}无[vhosts_${action}],稍后请手动替换"
		return
	else
		echo "替换配置文件成功"
	fi
	rm -rf vhosts
	cp -r vhosts_${action} vhosts
	echo "重启nginx..."
	service nginx start
	sleep 1s
	status=`ps -ef | grep nginx | grep process | grep -v grep`
	if [ -n "$status" ]; then
		echo "nginx重启成功"
	else
		echo "nginx重启失败,请手动重启"
		return
	fi
}

switch() {
	if [ ${action} == "master" ]; then
		echo "使用[宁桥]申港中台服务群对外提供服务..."
	elif [ "${action}" == "backup" ]; then
		echo "使用[长泰]申港中台服务群对外提供服务..."
	fi
	reConfigNginx
	cd ${utilDir}
	if [ ${action} == "master" ]; then
		./runAll.sh stop
	elif [ ${action} == "backup" ]; then
		./runAll.sh start
	fi
	cd ${curDir}
}

case "$action" in
    master|backup)
        switch
        ;;
    *)
        echo "Arguments error! [${action}]"
        echo "Usage: `basename $0` [master|backup]"
        ;;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值