隨著項(xiàng)目發(fā)展, 需要將一個應(yīng)用部署到多個環(huán)境上, 因?yàn)殛P(guān)系tomcat版本統(tǒng)一, 所以需要同一個tomcat下將一個應(yīng)用部署到不同的端口, 這些應(yīng)用連接不同數(shù)據(jù)庫, 這里使用了tomcat多實(shí)例的方式. 利用tomcat環(huán)境變量CATALINA_BASE, 一共兩個環(huán)境:
- 開發(fā)環(huán)境 連接開發(fā)庫
- 測試環(huán)境 連接測試庫
首先準(zhǔn)備兩個環(huán)境的實(shí)例目錄
開發(fā)環(huán)境: multi-instance/dev
測試環(huán)境: multi-instance/test
兩個實(shí)例目錄都包含以下目錄:
- bin 存放腳本 一般是啟動腳本
- conf 實(shí)例配置文件, 復(fù)制 ${CATALINA_HOME}/conf 修改server.xml文件端口 注意SHUTDOWN 端口多個實(shí)例不能重復(fù)
- logs 實(shí)例日志
- temp
- webapps 實(shí)例運(yùn)行應(yīng)用
- work jsp等編譯后的class文件
然后在 jenkins構(gòu)建項(xiàng)目完成后, 將運(yùn)行文件復(fù)制到對應(yīng)實(shí)例的 webapps目錄下, 在這里之前刪除 之前部署應(yīng)用的文件
啟動腳本大致如下:
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 "開始重啟開發(fā)環(huán)境[CATALINA_BASE=$CATALINA_BASE]::::::::::::::::::::::::::::::::::::::::::"
${CATALINA_HOME}/bin/startup.sh
開發(fā)環(huán)境啟動完整腳本:
#!/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"
## 替換應(yīng)用訪問地址
sed -i "/platform.url/d" $f
sed -i "/^#sed_mount/a$newurl" $f
##使用開發(fā)數(shù)據(jù)庫
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 "開始重啟開發(fā)環(huán)境[CATALINA_BASE=$CATALINA_BASE]::::::::::::::::::::::::::::::::::::::::::"
${CATALINA_HOME}/bin/startup.sh
sleep 5
測試環(huán)境部署[包含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復(fù)制到測試環(huán)境[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 &
##同步開發(fā)環(huán)境
echo '開始同步開發(fā)環(huán)境'
sleep 5
##啟動開發(fā)環(huán)境
source ../dev/bin/start-dev.sh
sleep 6
echo 'restarted........'