Bootstrap烂泥:学习tomcat之通过shell批量管理几个tomcat

本文由ilanniweb提供友情赞助,先发于烂泥行天下

想要得到更加多的作品,可以关注自身的微信ilanniweb

公司的政工是使用tomcat做web容器,为了更管用的接纳服务器的习性,我们一般布署三个tomcat做业务的负荷均衡。

一、业务需求

眼前一台服务器上,安插了4个tomcat,也就相当于4个节点。常常在保安工作时,须求大家一个一个tomcat实例进行单独的保证,感觉很不便于,所以就有了那篇文章。

不过为了更有利于的田间管理那4个tomcat,我那边做了两地点的干活,一是把装有的tomcat工作目录都针对此外单独的一个索引下,二是由此shell来启动、关闭和重启tomcat。

PS:本次实验的测试OS为centos6.5
64bit,不过shell脚本也可以在ubuntu下利用。

二、修改tomcat工作目录

为了不一个一个独立的掩护tomcat实例,首先大家来修改tomcat实例的行事目录。所有的tomcat配置文件位于conf目录下的server.xml文件。

我们只必要修改server.xml文件的appBase配置项,那样就能够指定tomcat实例的行事目录。如下:

Bootstrap 1

俺们需求把每一个tomcat实例server.xml配置文件的appBase配置项,修改为/app/tomcat/apiwebapps。

以上修改落成后,大家必要创设/app/tomcat/apiwebapps目录。

mkdir -p
/app/tomcat/apiwebapps

tree -L 3
/app/

Bootstrap 2

当今我们可以查看node1为例,查看该tomcat实例的目录结构,如下:

tree -L 1
./node1

Bootstrap 3

小心:这4个tomcat所监听的端口是例外的,否则不可以起动tomcat。

有关tomcat的单机多实例,能够看我的下一篇小说《烂泥:学习tomcat之tomcat单机多实例》。

三、创建shell脚本

当今我是把4个tomcat实例都放置/app/tomcat目录下,
那4个tomcat实例目录名称分别为node1、node2、node3、node4。
可以看到那4个tomcat实例的命名规则为node${i}。现在伊始编制shell脚本。

3.1
新建ilanni.sh脚本

新建一个shell文件命名为
ilanni.sh,内容如下:

#!/bin/bash

# Apache Tomcat
daemon

# chkconfig: 345 10
10

# description: Apache
Tomcat daemon

# processname:
tomcat

echo ” 
______                           __   “

echo ” /_  __/___ 
____ ___  _________ _/ /_  “

echo ”  / / / __ \/
__  __ \/ ___/ __  / __/  “

echo ” / / / /_/ / / / /
/ / /__/ /_/ / /_    “

echo “/_/  \____/_/
/_/ /_/\___/\__,_/\__/    “

echo
”                                        “

#定义JAVA_HOME

export
JAVA_HOME=/usr/local/java/jdk1.7.0_80

#概念多个tomcat的总目录,/app/tomcat目录下有node1、node2、node3、node4
三个tomcat实例。

tom=”/app/tomcat/node”

#概念启动脚本路径

startup_bin=”bin/startup.sh”

#概念tomcat的开行格局,启动方式为tomcat.sh
p1 start类似的命令

usage=”{p1|p2|p3|all}
{start|stop|restart|status}”

dev=”/dev/null”

#概念如何启动tomcat,在此大家是由此个数tomcat以及后边定义的tomcat的命令,来操作tomcat

#judge $1 $2 whether
null

if [ “$1” == “” -o “$2”
== “” ];then

    echo

     echo “Usage: $0
$usage”

    echo

exit 1

fi

#judge $1

case $1 in

   “p1”)

    tomcats=”1″

;;

   “p2”)

    tomcats=”1 2″

;;

   “p3”)

    tomcats=”1 2 3″

;;

   “all”)

    tomcats=”1 2 3
4″

;;

   *)

   echo “Usage: $0
$usage”

;;

esac

#定义tomcat的启动

#define start
function

tomcatstart() {

for i in $tomcats

  do

 
tom_home=”$tom$i”

  run_status=$(ps -ef |
grep -v ‘grep’ | egrep “java.*=${tom_home}”)

if [ “${run_status}X” !=
“X” ];then

echo “node$i is already
running…”

else

${tom_home}/${startup_bin}
&>$dev

echo “node$i
starting,Please wait 2s…”

sleep 2

fi

done

}

#定义tomcat的关闭

#define stop
function

tomcatstop() {

for j in $tomcats

do

tom1_home=”$tom$j”

tomcat_pid=$(ps -ef |
grep ${tom1_home} | grep “org.apache.catalina.startup.Bootstrap start”
| awk ‘{printf $2}’)

if [ “${tomcat_pid}X” ==
“X” ];then

echo “node$j is not
running…”

else

kill -9 ${tomcat_pid} &
>$dev

echo “node$j
stopping,Please wait 1s…”

sleep 1

echo “delte node$j
cache,Please wait 1s…”

rm -rf
${tom1_home}/work/*

fi

done

}

#定义tomcat的重启

#define restart
function

tomcatrestart() {

for m in $tomcats

do

tom2_home=”$tom$m”

run2_status=$(ps -ef |
grep -v ‘grep’ | egrep “java.*=${tom2_home}”)

if [ “${run2_status}X”
== “X” ];then

echo “node$m is not
running…”

${tom2_home}/${startup_bin}
&>$dev

echo “node$m
starting,Please wait 2s…”

sleep 2

else

ps -ef | grep
${tom2_home} | grep “org.apache.catalina.startup.Bootstrap start” | awk
‘{printf $2}’| xargs kill -9 >$dev

echo “node$m
stopping,Please wait 2s…”

sleep 1

${tom2_home}/${startup_bin}
&>$dev

echo “node$m
starting,Please wait 2s…”

sleep 2

fi

done

}

#定义tomcat的状态

#define status
function

tomcatstatus() {

for n in $tomcats

do

tom3_home=”$tom$n”

run3_status=$(ps -ef |
grep -v ‘grep’ | egrep “java.*=${tom3_home}”)

if [ “${run3_status}X”
== “X” ];then

echo “node$n is not
running…”

else

echo “node$n is
running”

fi

done

}

#judge $2

case $2 in

    “start”)

    tomcatstart

;;

    “stop”)

    tomcatstop

;;

   “restart”)

   tomcatrestart

;;

   “status”)

   tomcatstatus

;;

   *)

   echo “Usage: $0
$usage”

;;

esac

Bootstrap 4

3.2
修改ilanni.sh文件权限

ilanni.sh脚本创立落成后,现在大家来修改ilanni.sh的履行权限。如下:

chmod +x
ilanni.sh

Bootstrap 5

四、启动与关闭tomcat

ilanni.sh权限修改完成之后,大家就足以来启动那4个tomcat实例了。比如现在想启动node1和node2这七个实例,大家可以由此以下命令来启动。

./ilanni.sh p2
start

./ilanni.sh p2
status

Bootstrap 6

因而上图,可以很明显的看出实例node1、node2已经起步了。

tomcat启动后,假诺要停下的话,大家得以选拔如下命令:

./ilanni.sh p2
stop

Bootstrap 7

透过上图,大家得以看来,大家早就把实例node1、node2停掉了,而且我们也删除了实例node1、node2的缓存。

上述大家是以启动多少个tomcat实例为例的,假诺开行或者关闭是一个、四个以及有着tomcat实例的话,咱们可以利用如下命令。

./ilanni.sh p1
start

Bootstrap 8

./ilanni.sh p3
start

./ilanni.sh all
start

自然相应的关闭、重启和查阅情状命令,分别如下。

关门命令:

./ilanni.sh p1
stop

Bootstrap 9

./ilanni.sh p3
stop

./ilanni.sh all
stop

翻开情状命令:

./ilanni.sh p1
status

Bootstrap 10

./ilanni.sh p3
status

./ilanni.sh all
status

专注:该shell脚本只好依据node1、node2、node3、node4等各类执行下去,不能独立的停下和开行tomcat实例,除node1外。

五、把ilanni脚本加入种类服务

为了操作更便宜,大家得以把ilanni.sh这些剧本出席到系统服务中。具体操作方法如下:

cp
ilanni.sh /etc/init.d/ilanni

chkconfig
–add /etc/init.d/ilanni

chkconfig
ilanni on

Bootstrap 11

翻看是否已添加进服务列表

chkconfig
–list |grep ilanni

Bootstrap 12

加上到劳动之后,
就足以这样以服务格局来启动和终止、重启tomcat实例了。如下:

/etc/init.d/ilanni
p2 start

/etc/init.d/ilanni
p2 status

Bootstrap 13

经过上图,大家得以出,ilanni.sh脚本已经就插足到系统服务之中了。

到此有关通过shell批量管理tomcat的稿子就得了了。

相关文章