zoukankan      html  css  js  c++  java
  • Tomcat单机多实例部署

    一、Tomcat目录介绍

    前面有写过Centos下安装Tomcat。那么如果希望在一台机器上跑多个Tomcat实例,该怎么办呢?

    安装好之后,进入安装目录查看目录结构:

    简单介绍一下各个文件夹及文件:

    • 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文件)

    二、Tomcat 常见的几种部署场景

    通常,我们在同一台服务器上对 Tomcat 部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用。实例的概念可以理解为上面说的一个 Tomcat 目录。

    • 单实例单应用:比较常用的一种方式,只需要把你打好的 war 包丢在 webapps目录下,执行启动 Tomcat 的脚本就行了。
    • 单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。
    • 多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
    • 多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化。-

    三、Tomcat多实例部署

    官方推荐多实例部署图

    配置多实例 

    新建2个tomcat实例,ins01和ins02,文件目录如下:

     

    主要需要修改的配置为conf/server.xml文件:

    • 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配置:

    <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" />
    

      

     启停脚本

    start.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 "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>
    

      

    访问多实例网站

     

  • 相关阅读:
    opengl中的阴影映射
    怎样实现全屏显示(vc)
    刚花了10800大元买了一台IBM ThinkPad T60 dh2(港行水货)
    64位进程调用32位dll的解决方法
    转贴: OpenGL开发库的组成
    64位程序编译:终于将City****由32位编译为64位了
    opengl中的阴影体
    [转贴+更新]关于Directshow SDK 和Windows SDK
    安全专家称不再向厂商免费提供漏洞信息 狼人:
    国图新馆暴发网络病毒 来源或为读者自带笔记本 狼人:
  • 原文地址:https://www.cnblogs.com/skyflask/p/11231182.html
Copyright © 2011-2022 走看看