Tomcat pool 发布脚本

首先这边是乙方,项目多,系统多。新上线的项目都是脚本去做发布,早上又赶了套脚本。

之前公司有兄弟运行了下面这套脚本未加参数,说静态资源未发成功,tomcat 和发布系统的agent反而给干没了,于是又做了点优化,加了参数判断。

$ cat copy_h5_mall_new.sh 
#!/bin/sh
#copy h5 mall
nginx_static_ip=10.10.13.37
time_stamp=`date +"%Y-%m-%d-%H-%M-%S"`
h5_mall_zip_name=$1
war_md5=`md5sum ../static/${h5_mall_zip_name} | awk ‘{print $1}‘`
md5_file=`cat ../static/${h5_mall_zip_name}.md5 | awk ‘{print $1}‘`
if [ $# -ne "1" ];then
    echo "不看脚本就运行,干死你!"
else
    if [ "${war_md5}" = "${md5_file}" ];then
        ssh ${nginx_static_ip} "cp -r /data/desheng/h5_mall /data/desheng/h5_mall-${time_stamp}"
        ssh ${nginx_static_ip} "cd /data/desheng/h5_mall && /bin/rm -rf *"
        scp ../static/${h5_mall_zip_name} ${nginx_static_ip}:/data/desheng/h5_mall
        ssh ${nginx_static_ip} "cd /data/desheng/h5_mall && unzip ${h5_mall_zip_name}"
        ip_list=`cat ../env.sh | grep "frontier-cms-web" | cut -d "=" -f1 | cut -d "#" -f2 | uniq`
        for ip in ${ip_list[*]};do
            ssh $ip "cd /data/static/10 && cp -r h5_mall h5_mall-${time_stamp}"
            ssh $ip "cd /data/static/10/h5_mall && /bin/rm -rf *"
            scp ../static/${h5_mall_zip_name} $ip:/data/static/10/h5_mall/
            ssh $ip "cd /data/static/10/h5_mall && unzip ${h5_mall_zip_name}"
        done
    fi
fi

#这个脚本早上临时做的,发现这个静态资源还没有脚本发布。脚本主要对参数和运行脚本的用户做了判断。

$ cat copy_cms_static.sh 
#!/bin/bash
war=$1
nginx_static_ip=10.10.1.28
temp_time=`date +%Y-%m-%d-%H-%M-%S`
if [ `whoami` == "ody" ];then
    if [ $# -ne "1" ];then
        echo -n "输入的参数不对,请重新输入."
    else
        ssh ${nginx_static_ip} "cd /data/stgds/ && cp -r cms_dev{,-${temp_time}}"
        ssh ${nginx_static_ip} "cd /data/stgds/cms_dev/ && /bin/rm -rf ./*"
        scp ../static/${war} ${nginx_static_ip}:/data/stgds/cms_dev/
        ssh ${nginx_static_ip} "cd /data/stgds/cms_dev/ && unzip ${war}"
    fi
else
    echo -n "当前用户不是ody用户."
fi

下面是新项目一套发布脚本,昨天改的,运行一天还未见报错、未见发布失败的。

war包发布的脚本:

# cat deploy_new.sh 
#!/bin/sh
read -p "请输入你需要发布的Poll Name:" pool_name
if [ "$pool_name" = "" ];then
    echo "pool_name 不支持为空!"
else
    product_ip_list=`cat ./deploy_env.ini | grep ${pool_name} | awk -F ‘=‘ ‘{print $2}‘`
    time_stamp=`date +"%Y-%m-%d-%H-%M-%S"`
    function shutdown_tomcat() {
        ip=$1
    tomcat_port=8080
    tomcat_id=`ssh [email protected]$ip ps -ef | grep java | grep "tomcat" | grep -v "grep" | awk ‘{print $2}‘`
    if [ ! $tomcat_id ];then
        echo "tomcat process in ${ip} is not exist."
    else
        echo "shutdown tomcat in ${ip}"
        ssh [email protected]$ip "/bin/kill -9 $tomcat_id"
            if [ $? == 0 ];then
                echo "shutdown [email protected]$ip tomcat process is success."
            else
                echo "shutdown [email protected]$ip tomcat process is false."
                exit 2
            fi
    fi
    }
    function start_tomcat() {
    ip=$1
    echo "start tomcat in ${ip}."
    ssh [email protected]$ip "JAVA_HOME=/usr/local/java/jdk1.7.0_80;export JAVA_HOME;/bin/sh /data/tomcat/bin/startup.sh"
    ssh [email protected]$ip "/usr/local/java/jdk1.7.0_80/bin/jps"
    }
    if [ `whoami` == "ody" ];then
          ssh 10.18.3.200 "cd /data/war && md5sum -c ${pool_name}.war.md5"
          if [ $? -eq 0 ];then
            pool_ip_list=`awk ‘BEGIN{list="‘${product_ip_list}‘";split(list,ip_list,",");for(ip in ip_list){print ip_list[ip];}}‘`
            for deploy_ip in ${pool_ip_list[*]};do
                shutdown_tomcat ${deploy_ip}
                   ssh ${deploy_ip} "cd /data/tomcat/webapps && mv ${pool_name}.war ${pool_name}.war-${time_stamp}"
                     ssh ${deploy_ip} "cd /data/tomcat/webapps && rm -rf ${pool_name}"
                     scp 10.18.3.200:/data/war/${pool_name}.war /data/war/
                     scp /data/war/${pool_name}.war ${deploy_ip}:/data/tomcat/webapps
                     start_tomcat ${deploy_ip}
                    done
             else
                        echo "md5 check false."
                        exit 2
            fi
    else
        echo "please use ody user to exec this shell."
    fi
fi

脚本中的deploy_env.ini文件,是war和ip对应的关系:

大致是下面的样子:

# cat deploy_env.ini 
ad-whale=10.18.1.1,10.18.1.64
ad-whale-web=10.18.1.2
时间: 2024-12-22 07:17:39

Tomcat pool 发布脚本的相关文章

一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布

获取最新代码 svn update --username %SVN_USER% --password %SVN_PASSWORD% >> "../%LOG_FILE%" 备份Tomcat 站点 md "%APP_ROOT%\backup\%MVN_PROFILE%-%CUR_DATE%-%myran%" >> "%LOG_FILE%" xcopy "%APP_ROOT%\%MVN_PROFILE%" &

Tomcat学习(一)——使用Eclipse绑定Tomcat并发布应用

1.下载Tomcat 官网地址:http://tomcat.apache.org/whichversion.html 2.目录结构 bin:脚本目录 启动脚本:startup.bat 停止脚本:shutdown.bat conf:配置文件目录 (config /configuration) 核心配置文件:server.xml 用户权限配置文件:tomcat-users.xml 所有web项目默认配置文件:web.xml lib:依赖库,tomcat和web项目中需要使用的jar包 logs:日志

bash实战篇-数组在工作中的实际应用(测试环境发布脚本)

数组在之前已经用过介绍,下面介绍其在工作中的一个实际功用 出现的工作背景: 公司测试环境的tomcat的webapps下有3个项目,如果按通常的发布脚本,需要为每一个项目单独写一个发布脚本,我感觉太过麻烦,就想能否用一个脚本搞定这3个项目,最开始是在脚本里面定义三个变量获取相应的包名,之后对上传的目录进行判断,若该包存在则发布:虽然实现了,可过程有点繁琐,而且定义的变量是写死的,今后若有需求复用的话还需要额外进行修改,很是麻烦,近期在复习数组时突然想起数组功用,发现使用数组加for循环只需要几行

发布脚本

JAVA灰度发布脚本 #!/bin/bash # 设置时间变量 CTIME=$(date "+%Y-%m-%d-%H-%M") # 项目名称,建议和gitlab仓库名称一致 project= # 本地代码目录(gitlab拉取代码后存放目录) CODE_DIR=/data/gitlab/"$project" # 临时代码目录,用来修改配置文件和编译打包代码 TMP_DIR=/data/tmp/"$project" # 用来存放war包 WAR_D

jenkins服务器免密登录tomcat jenkins发布or回滚插件

安装maven91 gitlab-ctl start 92 /etc/init.d/jenkins start上传所需安装包查看自身jdk环境93 rpm -qa | grep jdk94 rpm -e java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 --nodeps #卸载自身jdk环境95 tar zxf jdk-8u

用JAXWS-RI在Tomcat中发布WebService

JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架,这两个框架各有优点,不过都属于重量级框架. JAXWS-RI是JAX WebService参考实现.相对于Axis2和CXF,JAXWS-RI是一个轻量级的框架.虽然是个轻量级框架,JAXWS-RI也提供了在Web服务器中发布Webservice的功能.官网地址https://jax-ws.jav

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*

linux tomcat一键维护脚本(值得收藏)

<span style="font-family: Arial, Helvetica, sans-serif;">#! /bin/sh</span> a="/usr/share/tomcat7/webapps/ROOT" b="/usr/share/tomcat7/webapps/ROOT.war" c="ROOT.war" tomcat_stop="/usr/share/tomcat7/bi

eclipse下修改项目名导致tomcat内发布名不一致的解决方法

这几天做了一个项目,后来因为一点原因需要修改Javaweb项目的名称,点击项目的名称->右键Refactor->Rename...  输入要修改的项目名称,保存后,部署到tomcat,突然发现eclipse下修改项目名导致tomcat内发布名不一致了 ,郁闷了,开始在网上找到解决办法,我是看 http://blog.chinaunix.net/uid-25820084-id-3531608.html 这个网站的kimutaku001的ChinaUnix博客位朋友的博客,解决了这个问题,我吧他说