部署新应用shell

来源:互联网 发布:网络文明绘画图片大全 编辑:程序博客网 时间:2024/06/05 05:39

经常开发时部署应用到服务器调试,一系列重复操作实在无趣,于是写了个一键部署的shell,以求解放。

功能:

  • 终止Tomcat进程
  • 备份原应用
  • 部署新应用
  • 替换相应配置文件
  • 启动Tomcat
  • 显示Tomcat运行日志

#!/bin/bash#部署新应用 by xl @ 2014-8-1 15:13:14#last modify @ 2014-8-4 14:25:31#获取最新war包echo ">GET NEW WAR"scp root@x.x.x.x:/home/xl/war/webapp.war /home/xl/war/webapp.war##参数设置##tomcatPath="/home/xl/tomcat"warPath="/home/xl/war/webapp.war"appName="webapp"webappsPath="$tomcatPath/webapps"bakPath="$tomcatPath/webapps_bak"#杀死tomcat进程#ps x|grep "/home/xl/tomcat"|grep -v "grep"|grep -v "sh"|awk '{print $1}'|xargs kill -9pid=$(ps x|grep "$tomcatPath"|grep -v "grep"|grep -v "sh"|awk '{print $1}')#ps x|grep "/home/xl/tomcat"|grep -v "grep"|grep -v "sh"|awk -F '[ +]'  '{print $1}'if [ -n "$pid" ]; then    #PID NOT EMPTY    #进程存在则中止kill -9 $pidecho ">KILL PID: " $pidfi#备份原应用if [ ! -d $bakPath ]; then#如果备份目录不存在,则新建mkdir "$bakPath"fibakNowPath="$bakPath/$(date +%Y%m%d_%H%M%S)"mkdir "$bakNowPath"echo ">BAK DIRECTORY: $bakNowPath"#BAKmv "$webappsPath/$appName"* "$bakNowPath"echo "[$webappsPath]"ls "$webappsPath"|grep "$appName"echo "[$bakNowPath]"bakApp=$(ls "$bakNowPath"|grep "$appName")echo $bakAppif [ -n "$bakApp" ]; then        echo ">BAKED"else        echo ">BAK FAIL"fi#DEPLOY#mv "$warPath" "$webappsPath"#UNZIPunzip -q "$warPath" -d "$webappsPath/$appName"echo ">DEPLOY NEW WAR"echo "[$webappsPath/$appName]"ls "$webappsPath/$appName"#REPLACE#替换配置文件:如数据库连接配置cp "./bak/jdbc.properties" "$webappsPath/$appName/WEB-INF/classes"echo ">REPLACED"echo ">DEPLOYED"#CONFIRM#是否启动Tomcatecho -e "Start WebApp? (y/ENTER or n)\c"read input#if [ -n "$input" ] && [ "y" != "$input" ] && [ "Y" != "$input" ]; thenif [ -n "$input" -a "y" != "$input" -a "Y" != "$input" ]; then#用户有输入则退出;直接输入回车则继续echo ">EXIT"exit 0fi#START#sh "$tomcatPath/bin/startup.sh"#可以避免关闭终端连接 导致 tomcat进程的关闭nohup "$tomcatPath/bin/startup.sh" &echo ">START WEBAPP.."#SHOW LOGecho ">SHOW LOG.."tail -f "$tomcatPath/logs/catalina.out"


0 0