tomcat多实例部署包含Jenkins对接-日记

随着项目发展, 需要将一个应用部署到多个环境上, 因为关系tomcat版本统一, 所以需要同一个tomcat下将一个应用部署到不同的端口, 这些应用连接不同数据库, 这里使用了tomcat多实例的方式. 利用tomcat环境变量CATALINA_BASE, 一共两个环境:

  • 开发环境 连接开发库
  • 测试环境 连接测试库

首先准备两个环境的实例目录
开发环境: multi-instance/dev
测试环境: multi-instance/test

两个实例目录都包含以下目录:
- bin 存放脚本 一般是启动脚本
- conf 实例配置文件, 复制 ${CATALINA_HOME}/conf 修改server.xml文件端口 注意SHUTDOWN 端口多个实例不能重复
- logs 实例日志
- temp
- webapps 实例运行应用
- work jsp等编译后的class文件

然后在 jenkins构建项目完成后, 将运行文件复制到对应实例的 webapps目录下, 在这里之前删除 之前部署应用的文件

启动脚本大致如下:

JAVA_HOME=/home/crt/jdk/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export CATALINA_BASE="$dev_home"
export CATALINA_HOME="/home/crt/tomcat/apache-tomcat-7.0.72"

echo "开始重启开发环境[CATALINA_BASE=$CATALINA_BASE]::::::::::::::::::::::::::::::::::::::::::"

${CATALINA_HOME}/bin/startup.sh

开发环境启动完整脚本:

#!/bin/sh

#var
dev_home=/home/crt/tomcat/multi-instance/dev
dir_src_fromJenkins=/home/crt/jenkins/jenkins_home/jobs/myapps/workspace

cd $dev_home

pids=`ps -ef | grep 'tomcat/multi-instance/dev' | grep -v grep | awk '{print $2}'`

for pid in ${pids[@]}
do
  if [ -n $pid ]; then
  echo "Kill the $pid "
  kill -9 $pid
  fi
done

echo '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[['

sleep 2

#删除缓存
rm -rf $dev/webapps/* $dev_home/work/Catalina/localhost/*

#crp war
war_1=$dir_src_fromJenkins/app1/target/app1.war

#解压war
##unzip $file -d $dirname/
unzip $war_1 -d -o $dev_home/webapps/app1

#修改配置文件
cd $dev_home/webapps/app1/WEB-INF/classes/
f="app.properties"
newurl="platform.url:http://172.17.60.133:6060/app1"

## 替换应用访问地址
sed -i "/platform.url/d" $f

sed -i "/^#sed_mount/a$newurl" $f
##使用开发数据库
sed -i "s/data/data2/g" $f

JAVA_HOME=/home/crt/jdk/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export CATALINA_BASE="$dev_home"
export CATALINA_HOME="/home/crt/tomcat/apache-tomcat-7.0.72"

echo "开始重启开发环境[CATALINA_BASE=$CATALINA_BASE]::::::::::::::::::::::::::::::::::::::::::"

${CATALINA_HOME}/bin/startup.sh

sleep 5

测试环境部署[包含jenkins对接]脚本:

#!/bin/bash

tpids=`ps -ef | grep 'tomcat/multi-instance/test' | grep -v grep | awk '{print $2}'`

for pid in ${tpids[@]}
do
  if [ -n $pid ]; then
  echo "kill the $pid "
  kill -9 $pid
  fi
done
echo '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[['

sleep 2
## test webapps_home
test_home=/home/crt/tomcat/multi-instance/test
dir_src_fromJenkins=/home/crt/jenkins/jenkins_home/jobs/myapps/workspace

cd $test_home

# app1
war_1=$dir_src_fromJenkins/app1/target/app1.war
# app2
war_2=$dir_src_fromJenkins/app2/target/app2.war
wars=(
$war_1
$war_2
)
#缓存
webapps=$test_home/webapps
del_dir=$test_home/work/Catalina/localhost

#del
echo 'Tomcat cache cleanup in {'$webapps '}{' $del_dir'}:::::::::::::::::::::::::::::::::::::::::'
rm -rf $webapps/* $del_dir/*

#cp war
echo '开始将war复制到测试环境[instance-test], into loop, path: '$webapps

for _e in ${wars[@]}
do
  echo "[e- $_e]"
  cp $_e $webapps
done

echo 'copied done,restart........'
echo '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[['

## source /etc/profile

### ./startup.sh &

JAVA_HOME=/home/crt/jdk/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export CATALINA_BASE="$test_home"
export CATALINA_HOME="/home/crt/tomcat/apache-tomcat-7.0.72"

echo $CATALINA_BASE $CATALINA_HOME

${CATALINA_HOME}/bin/startup.sh

##nohup sh startup.sh &

##同步开发环境
echo '开始同步开发环境'

sleep 5

##启动开发环境
source ../dev/bin/start-dev.sh

sleep 6

echo 'restarted........'

#jenkins 默认会永久保存每次构建信息, 如此会将磁盘空间耗尽, 建议按需要修改每个job配置 [#配置 #丢弃旧的构建 ]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容