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!!


分享到:


相關文章: