web工程自动部署(tomcat服务器)
工作中经常需要把web项目打成war包之后部署到tomcat服务器上,每次更新时步骤比较类似,这里提供公共步骤,编写名为auto_deploy.sh的shell脚本,只需要传递两个参数即可自动完成部署操作。舒服!
参数1:要部署的工程名
参数2:要部署文件的路径
shell脚本如下:
1 #传递参数 要部署的工程名 要部署文件目录路径 2 #!/bin/bash 3 #需要修改的地方 start-- 4 #工程名 5 readonly project_name= 6 #端口号 7 readonly port= 8 readonly xml_name='' 9 readonly sh_name='' 10 #需要修改的地方 end-- 11 #今日时间 格式为 YYYYY_MM_DD_HH_MM 12 suffix=`date +%Y%m%d%H%M` 13 #要部署工程的名字 14 cur_project_name=$1 15 #要部署文件目录路径 16 declare dir=$2 17 echo "传入的参数为部署工程名:$cur_project_name 文件路径:$dir" 18 #备份后的名字 19 bk_project_name=${project_name}"_"${suffix} 20 echo ${bk_project_name} 21 #备份原工程 22 echo 'start---' 23 if [ -d /data/wwwroot/$project_name ]; 24 then 25 sudo mv /data/wwwroot/$project_name /data/wwwroot/$bk_project_name 26 #拷贝待部署工程到wwwroot目录 27 sudo cp -rf ${dir}/$cur_project_name /data/wwwroot/ 28 echo '拷贝over...' 29 #重命名新工程名 30 sudo mv /data/wwwroot/$cur_project_name /data/wwwroot/$project_name 31 echo '重命名over...' 32 #删除新工程class目录下除'cn'以外的文件 33 ls /data/wwwroot/$project_name/WEB-INF/classes/ |grep -v cn|xargs rm -rf {} 34 echo '清空新工程class下目录over...' 35 #拷贝原工程中class下除'cn'以外的目录到新工程对应目录中 36 cd /data/wwwroot/$bk_project_name/WEB-INF/classes/ 37 ls|grep -v cn|xargs -i cp -rf {} /data/wwwroot/$project_name/WEB-INF/classes/ 38 echo '添加class下目录over...' 39 #覆盖web.xml文件 40 sudo cp -rf /data/wwwroot/$bk_project_name/WEB-INF/web.xml /data/wwwroot/$project_name/WEB-INF/ 41 echo '覆盖over...' 42 #查看原工程运行的进程id并kill 43 ps -ef|grep java|grep ${port}|grep ${xml_name}|grep -v grep|awk '{print "kill -9 " $2}' |sh 44 echo 'kill over...' 45 #进入tomcat的bin目录下面 46 cd /data/program/tomcat/bin/ 47 sudo ./${sh_name}.sh start 48 echo 'end...' 49 else 50 echo '路径不存在' 51 fi