日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2025/4/16 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 烂泥:学习tomcat之通过shell批量管理多个tomcat 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

本文由ilanniweb提供友情贊助,首發(fā)于爛泥行天下

想要獲得更多的文章,可以關(guān)注我的微信ilanniweb

公司的業(yè)務(wù)是使用tomcat做web容器,為了更有效的利用服務(wù)器的性能,我們一般部署多個(gè)tomcat做業(yè)務(wù)的負(fù)載均衡。

一、業(yè)務(wù)需求

目前一臺(tái)服務(wù)器上,部署了4個(gè)tomcat,也就相當(dāng)于4個(gè)節(jié)點(diǎn)。平時(shí)在維護(hù)業(yè)務(wù)時(shí),需要我們一個(gè)一個(gè)tomcat實(shí)例進(jìn)行單獨(dú)的維護(hù),感覺(jué)很不方便,所以就有了這篇文章。

但是為了更方便的管理這4個(gè)tomcat,我這邊做了兩方面的工作,一是把所有的tomcat工作目錄都指向另外單獨(dú)的一個(gè)目錄下,二是通過(guò)shell來(lái)啟動(dòng)、關(guān)閉和重啟tomcat。

PS:本次實(shí)驗(yàn)的測(cè)試OS為centos6.5 64bit,但是shell腳本也可以在ubuntu下使用。

二、修改tomcat工作目錄

為了不一個(gè)一個(gè)單獨(dú)的維護(hù)tomcat實(shí)例,首先我們來(lái)修改tomcat實(shí)例的工作目錄。所有的tomcat配置文件位于conf目錄下的server.xml文件。

我們只需要修改server.xml文件的appBase配置項(xiàng),這樣就可以指定tomcat實(shí)例的工作目錄。如下:

我們需要把每一個(gè)tomcat實(shí)例server.xml配置文件的appBase配置項(xiàng),修改為/app/tomcat/apiwebapps。

以上修改完畢后,我們需要?jiǎng)?chuàng)建/app/tomcat/apiwebapps目錄。

mkdir -p /app/tomcat/apiwebapps

tree -L 3 /app/

現(xiàn)在我們可以查看node1為例,查看該tomcat實(shí)例的目錄結(jié)構(gòu),如下:

tree -L 1 ./node1

注意:這4個(gè)tomcat所監(jiān)聽(tīng)的端口是不同的,否則無(wú)法啟動(dòng)tomcat。

有關(guān)tomcat的單機(jī)多實(shí)例,可以看我的下一篇文章《爛泥:學(xué)習(xí)tomcat之tomcat單機(jī)多實(shí)例》。

三、創(chuàng)建shell腳本

現(xiàn)在我是把4個(gè)tomcat實(shí)例都放到/app/tomcat目錄下, 這4個(gè)tomcat實(shí)例目錄名稱分別為node1、node2、node3、node4。 可以看出這4個(gè)tomcat實(shí)例的命名規(guī)則為node${i}。現(xiàn)在開(kāi)始編寫(xiě)shell腳本。

3.1 新建ilanni.sh腳本

新建一個(gè)shell文件命名為 ilanni.sh,內(nèi)容如下:

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

#定義多個(gè)tomcat的總目錄,/app/tomcat目錄下有node1、node2、node3、node4 四個(gè)tomcat實(shí)例。

tom="/app/tomcat/node"

#定義啟動(dòng)腳本路徑

startup_bin="bin/startup.sh"

#定義tomcat的啟動(dòng)方式,啟動(dòng)方式為tomcat.sh p1 start類似的命令

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

dev="/dev/null"

#定義如何啟動(dòng)tomcat,在此我們是通過(guò)個(gè)數(shù)tomcat以及前面定義的tomcat的命令,來(lái)操作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的啟動(dòng)

#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的關(guān)閉

#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的狀態(tài)

#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

3.2 修改ilanni.sh文件權(quán)限

ilanni.sh腳本創(chuàng)建完畢后,現(xiàn)在我們來(lái)修改ilanni.sh的執(zhí)行權(quán)限。如下:

chmod +x ilanni.sh

四、啟動(dòng)與關(guān)閉tomcat

ilanni.sh權(quán)限修改完畢之后,我們就可以來(lái)啟動(dòng)這4個(gè)tomcat實(shí)例了。比如現(xiàn)在想啟動(dòng)node1和node2這兩個(gè)實(shí)例,我們可以通過(guò)以下命令來(lái)啟動(dòng)。

./ilanni.sh p2 start

./ilanni.sh p2 status

通過(guò)上圖,可以很明顯的看出實(shí)例node1、node2已經(jīng)啟動(dòng)了。

tomcat啟動(dòng)后,如果要停止的話,我們可以使用如下命令:

./ilanni.sh p2 stop

通過(guò)上圖,我們可以看到,我們已經(jīng)把實(shí)例node1、node2停掉了,而且我們也刪除了實(shí)例node1、node2的緩存。

以上我們是以啟動(dòng)兩個(gè)tomcat實(shí)例為例的,如果啟動(dòng)或者關(guān)閉是一個(gè)、三個(gè)以及所有tomcat實(shí)例的話,我們可以使用如下命令。

./ilanni.sh p1 start

./ilanni.sh p3 start

./ilanni.sh all start

當(dāng)然相應(yīng)的關(guān)閉、重啟和查看狀態(tài)命令,分別如下。

關(guān)閉命令:

./ilanni.sh p1 stop

./ilanni.sh p3 stop

./ilanni.sh all stop

查看狀態(tài)命令:

./ilanni.sh p1 status

./ilanni.sh p3 status

./ilanni.sh all status

注意:該shell腳本只能按照node1、node2、node3、node4等依次執(zhí)行下去,不能單獨(dú)的停止和啟動(dòng)tomcat實(shí)例,除node1外。

五、把ilanni腳本加入系統(tǒng)服務(wù)

為了操作更方便,我們可以把ilanni.sh這個(gè)腳本加入到系統(tǒng)服務(wù)中。具體操作方法如下:

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

chkconfig --add /etc/init.d/ilanni

chkconfig ilanni on

查看是否已添加進(jìn)服務(wù)列表

chkconfig --list |grep ilanni

添加到服務(wù)以后, 就可以這樣以服務(wù)方式來(lái)啟動(dòng)和停止、重啟tomcat實(shí)例了。如下:

/etc/init.d/ilanni p2 start

/etc/init.d/ilanni p2 status

通過(guò)上圖,我們可以出,ilanni.sh腳本已經(jīng)就加入到系統(tǒng)服務(wù)之中了。

到此有關(guān)通過(guò)shell批量管理tomcat的文章就結(jié)束了。

轉(zhuǎn)載于:https://my.oschina.net/lanni654321/blog/608309

總結(jié)

以上是生活随笔為你收集整理的烂泥:学习tomcat之通过shell批量管理多个tomcat的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。