Tomcat在服務器上發佈項目流程(項目

Tomcat在服務器上發佈項目流程(項目/配置文件文件分離)

理想方式-基於shell腳本實現一鍵發佈

具備功能:

Tomcat自身配置與項目分離,便於以後升級Tomcat或者統一配置;

項目的配置文件與項目本身的war包分離(採用shell腳本將服務器上的配置文件替換war包內的配置文件);

一鍵部署與快速回滾

自定義項目的配置(jvm參數等)

實現步驟:

1.部署規劃

文件目錄結構:

├── service-app 項目部署文件目錄

--------------------------從安裝tomcat中拷貝以下文件夾

│ ├── conf

│ ├── logs (也可自己建立空文件夾)

│ ├── temp (同上)

│ ├── webapps (同上)

│ └── work (同上)

---------------------------項目相關文件

│ ├── app-conf (項目配置文件)

│ ├── war (war包解壓後存放的文件)

--------------------------編寫的shell腳本

│ ├── tomcat.sh (啟動腳本)

│ ├── deploy.sh (部署腳本)

--------------------------運行腳本後生成的文件

│ ├── appwar -> war/demo-2.0-2018-03-04_09-22-28 (軟連接指向解壓後的項目文件夾)

│ ├── current_deploy_info (當前部署記錄)

│ ├── last_deploy_info (上次部署記錄)

---------------------

[root@Aruen service-app]# ll

total 44

drwxr-xr-x 2 root root 4096 Nov 26 13:49 app-conf

lrwxrwxrwx 1 root root 45 Nov 26 14:28 appwar -> war/iaac-individual-2.0.0-2018-11-26_14-28-50

drwxr-xr-x 3 root root 4096 Nov 26 11:41 conf

-rwxr-xr-x 1 root root 84 Nov 26 14:28 current_deploy.sh

-rwxr-xr-x 1 root root 1706 Nov 26 14:11 deploy.sh

-rw-r--r-- 1 root root 84 Nov 26 14:28 last_deploy_info

drwxr-xr-x 2 root root 4096 Nov 26 14:28 logs

drwxr-xr-x 2 root root 4096 Nov 26 11:23 temp

-rwxr-xr-x 1 root root 640 Nov 26 11:31 tomcat.sh

drwxr-xr-x 5 root root 4096 Nov 26 14:28 war

drwxr-xr-x 7 root root 4096 Nov 26 11:23 webapps

drwxr-xr-x 3 root root 4096 Nov 26 11:25 work

修改conf下service.xml中的端口為默認80端口,便於瀏覽器訪問:

connectionTimeout="20000"

redirectPort="8443" />

Tomcat在服務器上發佈項目流程(項目/配置文件文件分離)

2.tomcat.sh腳本

#!/bin/bash

#配置jvm參數

#export JAVA_OPTS="-Xms100m -Xmx200m"

#export JAVA_HOME=/usr/lib/java/jdk1.8.0_131

export CATALINA_HOME=/usr/local/tomcat

export CATALINA_BASE="`pwd`"

case $1 in

start)

$CATALINA_HOME/bin/catalina.sh start

echo start success!!

;;

stop)

$CATALINA_HOME/bin/catalina.sh stop

echo stop success!!

;;

restart)

$CATALINA_HOME/bin/catalina.sh stop

echo stop success!!

sleep 2

$CATALINA_HOME/bin/catalina.sh start

echo start success!!

;;

esac

exit 0

3.deploy.sh腳本

#!/bin/bash -e

#應用war包名稱

pom_a=$1

#版本號

pom_v=$2

export work_time=$(date +%Y-%m-%d_%H-%M-%S)

echo "deploy time: $work_time"

mkdir -p war/

#1.1 下載war包的命令可以在此補充(svn/ftp),這裡寫死為war目錄

war=war/${pom_a}-${pom_v}.war

deploy_war() {

#1.2檢查war包是否存在

if [ ! -f "$war" ]; then

echo "war not exist: $war"

exit 1

fi

#2.1解壓war包到指定目錄,格式為war包名稱加部署時間(single-1.0.0-2018-11-26_14-28-50)

target_d=war/${pom_a}-${pom_v}-$work_time

target_dir=`pwd`/$target_d

unzip -q $war -d $target_dir

#2.2替換war包解壓後的配置文件,重複直接覆蓋,不提示

\cp -rf app-conf/* $target_dir/WEB-INF/classes/

#2.3建立軟連接appwar指向解壓後的war包目錄

rm -f appwar

ln -sf $target_d appwar

#2.4判斷current_deploy_info文件是否存在,即是否部署過

# 第一次部署,將Root.xml中的Context標籤下的docBace目錄指向軟連接appwar,並建立本次部署信息記錄(current_deploy_info文件)

# 以後部署,停止tomcat並生成上次部署的信息(lash_deplo_info文件)

if [ -f current_deploy.sh ]

then

./tomcat.sh stop

cat current_deploy.sh > last_deploy_info

fi

target_ln=`pwd`/appwar

echo '

' > conf/Catalina/localhost/ROOT.xml

echo -ne "\npom_a=${pom_a}\npom_v=${pom_v}\ndir=${target_d}" > current_deploy.sh

chmod +x current_deploy.sh

./tomcat.sh start

}

deploy_war

修改deploy.sh、tomcat.sh可執行權限

chmod -R 755 deploy.sh/tomcat.sh

4.使用示例

配置文件在java中修改,

//File resourcesFile = new File(System.getProperty("user.dir") + "/resources/config.txt");

File resourcesFile = new File(System.getProperty("user.dir") + "/app-conf/config.txt");

再將config文件上傳到app-conf目錄下

[root@Aruen app-conf]# ll

total 4

-rw-r--r-- 1 root root 1211 Nov 26 13:49 config.txt

##################部署war目錄下single-2.0.0.war#########################

[root@Aruen service-app]# ./deploy.sh single 2.0.0

deploy time: 2018-11-26_14-28-50

Using CATALINA_BASE: /usr/service-app

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/service-app/temp

Using JRE_HOME: /usr/local/jdk1.8.0_144

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

stop success!!

Using CATALINA_BASE: /usr/service-app

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/service-app/temp

Using JRE_HOME: /usr/local/jdk1.8.0_144

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

start success!!

##################回滾部署版本為1.0#########################

[root@Aruen service-app]# ll

total 44

drwxr-xr-x 2 root root 4096 Nov 26 13:49 app-conf

lrwxrwxrwx 1 root root 45 Nov 26 14:28 appwar -> war/single-2.0.0-2018-11-26_14-28-50

drwxr-xr-x 3 root root 4096 Nov 26 11:41 conf

-rwxr-xr-x 1 root root 84 Nov 26 14:28 current_deploy.sh

-rwxr-xr-x 1 root root 1706 Nov 26 14:11 deploy.sh

-rw-r--r-- 1 root root 84 Nov 26 14:28 last_deploy_info

drwxr-xr-x 2 root root 4096 Nov 26 14:28 logs

drwxr-xr-x 2 root root 4096 Nov 26 11:23 temp

-rwxr-xr-x 1 root root 640 Nov 26 11:31 tomcat.sh

drwxr-xr-x 5 root root 4096 Nov 26 14:28 war

drwxr-xr-x 7 root root 4096 Nov 26 11:23 webapps

drwxr-xr-x 3 root root 4096 Nov 26 11:25 work

[root@Aruen service-app]# rm -f appwar

[root@Aruen service-app]# ln -sf war/single-1.0.0-2018-11-26_14-28-38

[root@Aruen service-app]# ll

total 44

drwxr-xr-x 2 root root 4096 Nov 26 13:49 app-conf

lrwxrwxrwx 1 root root 45 Nov 26 14:28 appwar -> war/single-1.0.0-2018-11-26_14-28-50

drwxr-xr-x 3 root root 4096 Nov 26 11:41 conf

-rwxr-xr-x 1 root root 84 Nov 26 14:28 current_deploy.sh

-rwxr-xr-x 1 root root 1706 Nov 26 14:11 deploy.sh

-rw-r--r-- 1 root root 84 Nov 26 14:28 last_deploy_info

drwxr-xr-x 2 root root 4096 Nov 26 14:28 logs

drwxr-xr-x 2 root root 4096 Nov 26 11:23 temp

-rwxr-xr-x 1 root root 640 Nov 26 11:31 tomcat.sh

drwxr-xr-x 5 root root 4096 Nov 26 14:28 war

drwxr-xr-x 7 root root 4096 Nov 26 11:23 webapps

drwxr-xr-x 3 root root 4096 Nov 26 11:25 work

[root@Aruen service-app]# ./tomcat.sh restart

Using CATALINA_BASE: /usr/service-app

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/service-app/temp

Using JRE_HOME: /usr/local/jdk1.8.0_144

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

stop success!!

Using CATALINA_BASE: /usr/service-app

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/service-app/temp

Using JRE_HOME: /usr/local/jdk1.8.0_144

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

start success!!


分享到:


相關文章: