包含tomcat、jar、rust

#!/bin/bash
bak_date=`date +%Y%m%d`
bak_dir=/data/bak/$bak_date
user=weshop
function deploy_script(){
#同步到生产服务器,排除log目录,本地没有的文件远程服务器也会删除
#方式1
# for i in gdd-prod01 gdd-prod02
# do
# echo "同步目录到$i"
# rsync -avg --delete $project_dir $i:/data/prod/service/ --exclude log
# echo "同步目录完成,正在重启服务..."
# expect <<EOF
# spawn ssh ${user}@$i
# send "cd $project_dir\r"
# send "$project_restart \r" #这里没法使用变量代替
# send "netstat -ntlp |grep $project_port \r"
# send "exit\r"
# expect eof
# EOF
# echo "重启服务完成,$i部署完成。"
# sleep 3
# done
#或者使用ansible ansible PROD01 -m shell -a "cd /data/prod/service/gdd-wxcommon && nohup sh tomcat20090/restart.sh" ansible执行时会另外启动一个窗口来执行命令,执行完后就会关闭,所以必须加nohup
#方式2(暂时使用这个)
for i in gdd-prod01 gdd-prod02;do echo "同步目录到$i";rsync -avg --delete $project_dir $i:/data/prod/service/ --exclude log --exclude logs;done


}

function backup_project(){
echo "备份项目中.."
tar -cvzf $project_name$bak_date.tar $project_name 1>/dev/null
mv -f $project_name$bak_date.tar $bak_dir/
echo "备份完成,发布中.."
}

mkdir -p $bak_dir
cd /data/prod/service/



echo "*********************************
请使用weshop用户执行此脚本
project_name:
1.gdd-wxcommon
2.advanced-statistics
3.advanced-product
4.advanced-coupon
5.advanced-job
6.advanced-order
7.advanced-report
8.advanced-shop
9.gdd-bill
10.gdd-cashier
11.gdd-common
12.gdd_message
13.gdd-xuser
14.order

*********************************"
read -p "后端发布专用,请选择要发布的项目序号,多个序号使用,号分隔
" project_number



case $project_number in
1)
project_name=gdd-wxcommon
project_dir=/data/prod/service/$project_name
project_port=20090
#project_restart=sh tomcat20090/restart.sh
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh tomcat20090/restart.sh&&sleep 2 &&tail log/access/info"
echo "重启服务完成,部署完成。"

;;
2)
project_name=advanced-statistics
project_dir=/data/prod/service/$project_name
project_port=20120
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh run.sh restart &&sleep 2 &&tail log/advanced_statistics.log"
echo "重启服务完成,部署完成。"

;;
3)
project_name=advanced-product
project_port=20020
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh run.sh $project_name &&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,部署完成。"
;;
4)
project_name=advanced-coupon
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh run.sh $project_name &&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,部署完成。"
;;
5)
project_name=advanced-job
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
for i in gdd-prod01 gdd-prod02
do
ssh $user@$i "cd $project_dir &&nohup sh $project_name.sh stop &&nohup sh $project_name.sh start cfg/application-prod.yml&&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,$i部署完成。"
sleep 3
done
;;
6)
project_name=advanced-order
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh run.sh &&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,部署完成。"
;;
7)
project_name=advanced-report
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
for i in gdd-prod01 gdd-prod02
do
ssh $user@$i "cd $project_dir &&nohup sh $project_name.sh stop &&nohup sh $project_name.sh start cfg/application-prod.yml&&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,$i部署完成。"
sleep 3
done
echo "重启服务完成,部署完成。"
;;
8)
project_name=advanced-shop
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh run.sh &&sleep 2 &&tail log/$project_name.$project_date-0.log"
echo "重启服务完成,部署完成。"
;;
9)
project_name=gdd-bill
project_dir=/data/prod/service/$project_name
project_date=`date +%Y%m%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh tomcat20110/restart.sh&&sleep 2 &&tail log/access/info.$project_date"
echo "重启服务完成,部署完成。"
;;
10)
project_name=gdd-cashier
project_dir=/data/prod/service/$project_name
project_date=`date +%Y%m%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh tomcat20060/restart.sh&&sleep 2 &&tail log/access/info.$project_date"
echo "重启服务完成,部署完成。"
;;
11)
project_name=gdd-common
project_dir=/data/prod/service/$project_name
project_date=`date +%Y%m%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh tomcat20080/restart.sh&&sleep 2 &&tail tomcat20080/logs/catalina.out"
echo "重启服务完成,部署完成。"
;;
12)
project_name=gdd_message
project_dir=/data/prod/service/$project_name
project_date=`date +%Y%m%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh tomcat20150/restart.sh&&sleep 2 &&tail tomcat20150/logs/catalina.out"
echo "重启服务完成,部署完成。"
;;
13)
project_name=gdd-xuser
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh restart_online.sh&&sleep 2 &&tail logs/$project_date.log"
echo "重启服务完成,部署完成。"
;;
14)
project_name=order
project_dir=/data/prod/service/$project_name
project_date=`date +%Y-%m-%d`
#开始备份文件
backup_project
#开始发布
deploy_script
echo "同步目录完成,正在重启服务..."
ansible ALL -m shell -a "cd $project_dir && nohup sh adv_order &"
echo "重启服务完成,部署完成。"
;;
*)
echo "other"
;;
esac