bash脚本自动部署war包到tomcat和切换nginx代理

2 篇文章 0 订阅

服务器中开两个tomcat, 一个用来测试,一个用来生产,前端用nginx代理。新包用测试域名在测试tomcat上测试,测试完后停止测试用tomcat,修改配置文件成生产服务的配置,启动测试用tomcat,停止生产用tomcat,同步生成用数据库到测试用数据,nginx中把生产用域名后端指向测试用tomcat,完成测试用tomcat到生产用tomcat的切换。下次新版本测试用原来的生产用tomcat。

  1 #!/usr/bin/bash
  2
  3 path_tomcat[1]=/usr/local/java/tomcat
  4 path_tomcat[2]=/usr/local/java/tomcat2
  5 port_tomcat[1]=tomcat1
  6 port_tomcat[2]=tomcat2
  7 nginx_conf_file1=/etc/nginx/conf.d/xxxx1.conf
  8 nginx_conf_file2=/etc/nginx/conf.d/xxxx2.conf
  9 db_name[1]=xxxxx
 10 db_name[2]=xxxxx1
 11 db_backup_fold=/xxxx/work_dir/old
 12 db_user= ewrwk
 13 db_update_sql=/xxxx/work_dir/new/sql/update.sql
 14
 15 # function to stop tomcat, one variable should given, for example 1, 2
 16 function stop_tomcat()
 17 {
 18         tomcat_pid=$(ps aux | grep ${path_tomcat[$1]}/conf | sed '/ grep /d' | awk '{print $2}')
 19         if [ -z "$tomcat_pid" ];then
 20                 echo "The tomcat you want to stop is not running!"
 21                 return 0
 22         fi
 23
 24         ${path_tomcat[$1]}/bin/shutdown.sh
 25         for ((i=1; i<=8; i++))
 26         do
 27                 if pgrep java | grep "$tomcat_pid";then
 28                         if [ "$i" -eq 8 ]; then
 29                                 echo "Killing tomcat ..."
 30                                 kill -9 "$tomcat_pid"
 31                                 sleep 1s
 32                         else
 33                                 sleep 1s
 34                         fi
 35                 else
 36                         break
 37                 fi

 38         done
 39         if pgrep java | grep "$tomcat_pid";then
 40                 echo "Can't stop tomcat, check it yourself!"
 41                 exit 1
 42         else
 43                 echo "Successfully stop tomcat!"
 44         fi
 45 }
 46
 47 function change_tomcat_to_tomcat()
 48 {
 49         if [ "$#" -ne 2 ];then
 50                 echo "Variable number must be 2!"
 51                 exit 1
 52         fi
 53         # get java pid runing producting tomcat
 54         tomcat_pid=$(ps aux | grep ${path_tomcat[$1]}/conf | sed '/ grep /d' | awk '{print $2}')
 55         if [ -z "$tomcat_pid" ];then
 56                 echo -n "${path_tomcat[$1]} was not runing! should continue? yes/no: "
 57                 read confirm
 58                 if [ "$confirm" != "y" ];then
 59                         echo "exiting!"
 60                         exit 1
 61                 fi
 62         else
 63                 echo "Stoping New tomcat ... "
 64                 stop_tomcat $2
 65                 echo "Stop old tomcat ..."      
 66                 stop_tomcat $1
 67
 68         fi
 69

 70         # try to shutdown producting tomcat
 71         set -e
 72
 73         # backup data base and build new data base and execute database update
 74         db_backup_name=${db_name[$1]}_$(date +%Y%m%d%H%M).sql
 75         echo "Backup database ..."
 76         pg_dump -U postgres -c ${db_name[$1]} > $db_backup_fold/$db_backup_name
 77         echo "Restarting postgresql"
 78         systemctl restart postgresql
 79         echo "Droping database ..."
 80         su - postgres -c "dropdb ${db_name[$2]}"
 81         echo "Creating database ..."
 82         su - postgres -c "createdb ${db_name[$2]} -O $db_user"
 83         echo "Building database ..."
 84         psql -U postgres  ${db_name[$2]} < $db_backup_fold/$db_backup_name
 85         if [ -e "$db_update_sql" ]; then
 86                 echo "Updateing database ..."
 87                 psql -U $db_user ${db_name[$2]} < $db_update_sql
 88         fi
 89
 90         echo "Changing comm.properties ..."
 91         sed -i 's/xxxxx/xxxxx/' ${path_tomcat[$2]}/webapps/sssss/WEB-INF/classes/comm.properties
 92         echo "Restarting New tomcat ..."
 93         ${path_tomcat[$2]}/bin/startup.sh
 94
 95         # change nginx config file
 96         echo "Changing nginx config file ..."
 97         sed -i 's/'${port_tomcat[$1]}'/'${port_tomcat[$2]}'/' ${nginx_conf_file1}
 98         [ -e "${ngingx_conf_file2}" ] && mv ${nginx_conf_file2} ${nginx_conf_file2}_backup
 99         echo "Restart nginx"
100         systemctl restart nginx
101 }
102
103 if grep ${port_tomcat[1]} $nginx_conf_file1; then

104         change_tomcat_to_tomcat 1 2
105 elif grep ${port_tomcat[2]} $nginx_conf_file1; then
106         change_tomcat_to_tomcat 2 1
107 else
108         echo "Can't find tomcat1 or tomcat2 setting in ${nginx_conf_file1}, may wrong in nginx conf file!"
109         exit 1
110 fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值