Tomcat單機多實例部署

1、Tomcat目錄介紹

前面有寫過Centos下安裝Tomcat。那麼若是但願在一臺機器上跑多個Tomcat實例,該怎麼辦呢?html

安裝好以後,進入安裝目錄查看目錄結構:java

簡單介紹一下各個文件夾及文件:linux

  • bin:主要存放腳本文件,例如比較經常使用的windows和linux系統中啓動和關閉腳本
  • conf:主要存放配置文件,其中最重要的兩個配置文件是server.xml和web.xml
  • lib:主要存放tomcat運行所依賴的包
  • LICENSE:版權許可證,軟件版權信息及使用範圍等信息
  • logs:主要存放運行時產生的日誌文件,例如catalina.out(曾經掉過一個大坑)、catalina.{date}.log等
  • NOTICE:通知信息,一些軟件的所屬信息和地址什麼的
  • RELEASE-NOTES:發佈說明,包含一些版本升級功能點
  • RUNNING.txt:運行說明,必需的運行環境等信息
  • temp:存放tomcat運行時產生的臨時文件,例如開啓了hibernate緩存的應用程序,會在該目錄下生成一些文件
  • webapps:部署web應用程序的默認目錄,也就是 war 包所在默認目錄
  • work:主要存放由JSP文件生成的servlet(java文件以及最終編譯生成的class文件)

2、Tomcat 常見的幾種部署場景

一般,咱們在同一臺服務器上對 Tomcat 部署需求能夠分爲如下幾種:單實例單應用,單實例多應用,多實例單應用,多實例多應用。實例的概念能夠理解爲上面說的一個 Tomcat 目錄。web

  • 單實例單應用:比較經常使用的一種方式,只須要把你打好的 war 包丟在 webapps目錄下,執行啓動 Tomcat 的腳本就好了。
  • 單實例多應用:有兩個不一樣的 Web 項目 war 包,仍是隻須要丟在webapps目錄下,執行啓動 Tomcat 的腳本,訪問不一樣項目加上不一樣的虛擬目錄。這種方式要慎用在生產環境,由於重啓或掛掉 Tomcat 後會影響另一個應用的訪問。
  • 多實例單應用:多個 Tomcat 部署同一個項目,端口號不一樣,能夠利用 Nginx 這麼作負載均衡,固然意義不大。
  • 多實例多應用:多個 Tomcat 部署多個不一樣的項目。這種模式在服務器資源有限,或者對服務器要求並非很高的狀況下,能夠實現多個不一樣項目部署在同一臺服務器上的需求,來實現資源使用的最大化。-

3、Tomcat多實例部署

官方推薦多實例部署圖

 

配置多實例 

新建2個tomcat實例,ins01和ins02,文件目錄以下:apache

 

 

主要須要修改的配置爲conf/server.xml文件:flask

  • Server Port:該端口用於監聽關閉tomcat的shutdown命令,默認爲8005
  • Connector Port:該端口用於監聽HTTP的請求,默認爲8080
  • AJP Port:該端口用於監聽AJP( Apache JServ Protocol )協議上的請求,一般用於整合Apache Server等其餘HTTP服務器,默認爲8009
  • Redirect Port:重定向端口,出如今Connector配置中,若是該Connector僅支持非SSL的普通http請求,那麼該端口會把 https 的請求轉發到這個Redirect Port指定的端口,默認爲8443;

ins01配置:windows

<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector executor="tomcatThreadPool"
               port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  

ins02配置:緩存

<Server port="8015" shutdown="SHUTDOWN">

<Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 <Connector executor="tomcatThreadPool"
               port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

  

 啓停腳本tomcat

start.shbash

#!/bin/bash

export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.31
export CATALINA_BASE=${1%/}

echo $CATALINA_BASE

TOMCAT_ID=`ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE "|grep -v "grep"|awk '{ print $2}'`


if [ -n "$TOMCAT_ID" ] ; then
echo "tomcat(${TOMCAT_ITOMCAT_ID}) still running now , please shutdown it first";
    exit 2;
fi

TOMCAT_START_LOG=`$CATALINA_HOME/bin/startup.sh`


if [ "$?" = "0" ]; then
    echo "$0 ${1%/} start succeed"
else
    echo "$0 ${1%/} start failed"
    echo $TOMCAT_START_LOG
fi

  

stop.sh

#!/bin/bash

export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.31
export CATALINA_BASE=${1%/}

echo $CATALINA_BASE

TOMCAT_ID=`ps aux |grep "java"|grep "[D]catalina.base=$CATALINA_BASE "|awk '{ print $2}'`

if [ -n "$TOMCAT_ID" ] ; then
TOMCAT_STOP_LOG=`$CATALINA_HOME/bin/shutdown.sh`
else
    echo "Tomcat instance not found : ${1%/}"
    exit

fi


if [ "$?" = "0" ]; then
    echo "$0 ${1%/} stop succeed"
else
    echo "$0 ${1%/} stop failed"
    echo $TOMCAT_STOP_LOG
fi

  

啓動多實例

[root@localhost tomcat]# /usr/local/tomcat/tomcat-start-stop/start.sh /usr/local/tomcat/tomcat-ins01
/usr/local/tomcat/tomcat-ins01
/usr/local/tomcat/tomcat-start-stop/start.sh /usr/local/tomcat/tomcat-ins01 start succeed


[root@localhost tomcat]# /usr/local/tomcat/tomcat-start-stop/start.sh /usr/local/tomcat/tomcat-ins02
/usr/local/tomcat/tomcat-ins02
/usr/local/tomcat/tomcat-start-stop/start.sh /usr/local/tomcat/tomcat-ins02 start succeed
[root@localhost tomcat]#

 

查看啓動狀況

 

配置多實例網站

部署ins01

 

cat tomcat-ins01/webapps/ROOT/index.jsp
<html>
<title>Tomcat-1</title>
<body>
    Hello Boy! from Tomcat-1.
</body>
</html>

  

部署ins02

[root@localhost tomcat]# cat tomcat-ins02/webapps/ROOT/index.jsp
<html>
<title>Tomcat-1</title>
<body>
    Hello Boy! from Tomcat-2.
</body>
</html>

  

訪問多實例網站

 

 

相關文章
相關標籤/搜索