Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



公司用的一键部署脚本

由于现在开发还未成熟,导致每次更新应用都需要重启服务。过程繁琐。为此写了一个一键部署应用,重启服务的脚本。

#!/bin/bash
DST='/usr/local/tomcat/'   //目标文件路径,为已经在运行的文件,等待替换的。
SRC='/home/username/newdeployment'    //源文件路径,为需要新上传的文件目录
BACKUP='/home/username/olddeployment'  //备份文件路径
nowdate=$(date +%Y%m%d)
//判断源文件是否存在,如果不存在则自动退出脚本,此操作是防止误运行此脚本导致项目重启并且删除掉已经在运行的文件
if  [ ! -f "$SRC/test.war" ];then
   echo "$SRC/test.war not exist"
   exit 1
fi
 
//判断目标文件是否存在,如果不存在同样退出脚本,此操作同样也是为了防止误操作,只有在源文件和目标文件同时存在的情况下才会继续往下执行。这两个if语句可以写到一个里面。
if [ ! -d "$DST/webapps/" ];then
   echo "$DST not exist"
   exit 1
fi
 
//如果上面条件全部满足的话,则系统会输出tomcat的pid并且将其强制kill
echo 'stoping tomcat.....'
    ps aux |grep tomcat |grep -v grep |awk '{print $2}' |xargs kill -9
 
//kill掉进程之后,系统会删除掉目标文件,并且将目标文件war包移动到备份目录,格式为test_time.war,然后删除缓存文件
echo 'remove and backup relative files and directories'
    rm -rf $DST/webapps/test
    mv  $DST/webapps/test.war $BACKUP/test_$nowdate.war
    rm -rf $DST/work/Catalina/localhost/test
 
//上述步骤完成之后便会将源文件war包拷贝到目标文件目录。然后删除源文件,这里可以用mv命令实现就可以不需要rm
echo 'deploy new version file: test.war'
    cp -f $SRC/test.war $DST/webapps/
    rm -f $SRC/test.war
 
//拷贝过去之后重新启动tomcat,因为war包放在tomcat下面是可以自动解压出来
echo 'starting tomcat.....'
    /usr/local/tomcat/bin/startup.sh

 

浏览1052  评论0  niko于 2015-3-6 11:36
发言