一个服务器端jetty容器自动备份和发版的脚本,已使用与生产环境。可集成到Jenkins中实现打包后自动备份发版。
文件:publish.sh
#!/bin/sh
SERVER_IP=`ifconfig |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
APP_HOME=/opt/app
LOG_HOME=/opt/logs
WAR_HOME=/opt/deploy/warFiles
JETTY_HOME=/opt/jetty-app-8180
NOW_TIME=$(date +%Y%m%d%H%M)
WAR_NAME=app
BAK_DIR=last
SUFFIX='['$WAR_NAME']['$SERVER_IP']'
echo $SUFFIX compare old file and new file size
old_file_size=0
if [ -f $APP_HOME/$WAR_NAME.war ];then
old_file_size=`du -b $APP_HOME/$WAR_NAME.war | awk '{print $1}' `
fi
new_file_size=`du -b $WAR_HOME/$WAR_NAME.war | awk '{print $1}' `
if [ $old_file_size -ne $new_file_size ]
then
echo $SUFFIX file has changed, should redeploy $WAR_NAME service
echo $SUFFIX step 1. backup last backup file to $WAR_NAME.war_$NOW_TIME
if [ ! -d $APP_HOME/$BAK_DIR ];then
echo $SUFFIX Directory $APP_HOME/$BAK_DIR does not exist, make dir
mkdir -p $APP_HOME/$BAK_DIR
fi
cd $APP_HOME/$BAK_DIR
if [ -f $WAR_NAME.war ];then
mv $WAR_NAME.war $WAR_NAME.war_$NOW_TIME
fi
echo $SUFFIX step 2. backup old file to $APP_HOME/$BAK_DIR/$WAR_NAME.war
cd $APP_HOME
cp $WAR_NAME.war $APP_HOME/$BAK_DIR/$WAR_NAME.war
echo $SUFFIX step 3. copy new file into $APP_HOME
cp $WAR_HOME/$WAR_NAME.war ./$WAR_NAME.war
echo $SUFFIX step 4. restart jetty service...
cd $JETTY_HOME/bin
sh ./jetty.sh restart >/dev/null 2>&1
else
echo $SUFFIX file not changed, skip redeploy steps
fi
echo $SUFFIX deploy success
回滚脚本:roll_back.sh
#!/bin/sh
SERVER_IP=`ifconfig |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
APP_HOME=/opt/app
LOG_HOME=/opt/logs
JETTY_HOME=/opt/jetty-app-8180
NOW_TIME=$(date +%Y%m%d%H%M)
WAR_NAME=app ##app的war包名
BAK_DIR=last ##备份文件夹
SUFFIX='['$WAR_NAME']['$SERVER_IP']'
echo $SUFFIX compare backup file and current file size
backup_file_size=0
if [ ! -f $APP_HOME/$BAK_DIR/$WAR_NAME.war ];then
echo $SUFFIX no backup file found, rollback finished unsuccessfully!
exit
else
backup_file_size=`du -b $APP_HOME/$BAK_DIR/$WAR_NAME.war | awk '{print $1}' `
fi
current_file_size=`du -b $APP_HOME/$WAR_NAME.war | awk '{print $1}' `
if [ $backup_file_size -ne $current_file_size ]
then
echo $SUFFIX file has changed, should rollback $WAR_NAME service
echo $SUFFIX step1. copy backup file from $APP_HOME/$BAK_DIR/$WAR_NAME.war to $APP_HOME/$WAR_NAME.war
cd $APP_HOME
cp $APP_HOME/$BAK_DIR/$WAR_NAME.war $APP_HOME/$WAR_NAME.war
echo $SUFFIX step 2. restart jetty service...
cd $JETTY_HOME/bin
sh ./jetty.sh restart >/dev/null 2>&1
else
echo $SUFFIX file not changed, skip redeploy steps
fi
echo $SUFFIX deploy success