精华内容
下载资源
问答
  • Tomcat多实例部署

    2014-06-17 16:44:52
    Tomcat多实例部署 Weblogic多实例部署回顾Tomcat多实例实现结尾 Tomcat多实例部署  前言 一般我们使用tomcat时,如果是多实例的情况都会拷贝多个tomcat,但实际上tomcat还可以建立类似于weblogic的domain,...

    Tomcat多实例部署

     前言

    一般我们使用tomcat时,如果是多实例的情况都会拷贝多个tomcat,但实际上tomcat还可以建立类似于weblogicdomain,以实现多实例部署。

    Weblogic多实例部署回顾

    tomcat多实例部署前我们先回顾一下weblogic的多实例。以weblogic10为例,安装完weblogic后,会在c:\bea10生成weblogicHome目录,里面放置的是jdkweblogic的管理目录等:

                                 

    使用的时候我们会建立一个独立的domain,可以放置到任何目录。每个独立的domain包含自己的bin目录,在bin目录中启动domain时会设置两个环境变量,一个是weblogic home的位置,一个是domain的位置,如下:

    setDomainEnv.cmd中设置的是weblogichome的位置

     

    startWebLogic.cmd中设置的是domain的位置

     

    Weblogic建立domain时,通过自动设置了这两个参数,使得安装一个weblogic可以自动创建多个domain,并分别启动(每个domain应该设置不同的端口)。

    Tomcat多实例实现

    各种应用服务器的思路其实大同小异,下面看tomcat的多实例部署。以下我把tomcat的实例称作instance。并通过tomcat7进行讲解(tomcat5的文件夹略有不同)。总的结构如下:

     

    首先,我们建立tomcat主目录,如下:

             

    对于tomcat主目录,从apache上下载解压以后,删除复制出来binlib和根目录的文件几个。

    然后,我们建立instance。如下我在tomcat目录建立了一个主目录,然后创建了nstc-instances用于放置各种实例:

     

     

    而对于每个实例,其实需要的内容也很少,必须的是conf文件夹和里面的文件。Logstempwork创建实例时可以不设置(实例启动时会自动生成),而对于webapps目录可以在conf的文件中指定。最完整的实例如下:

     

    Startup.bat是我手动创建的

     

    对于tomcat也存在两个变量CATALINA_HOMECATALINA_BASE,其中CATALINA_HOME指定的是tomcat主目录,CATALINA_BASE指定的是instance的目录,因为CATALINA_BASE默认和主目录相同,所以一般不用单独建立instance。如上图设置了实例的目录,然后因为导航到了tomcat主目录启动,所以不需要单独设置CATALINA_HOME了。

    实际使用时webapps也可以单独设置,例如在conf\Catalina\localhost\WST.xml文件中,可以指定应用的目录就是程序编译后的目录,这样程序编译后就不用再拷贝到webapps中了。

     

    最后,注意每个实例需要设置不同的端口。

    结尾

    至此,我们非常快速的了解了如果对tomcat建立多个instance,同时我们也了解到了其实tomcat的主目录只需要binlib文件夹中的内容就可以了。

    通过对tomcat的了解,未来可以在产品中嵌入tomcat(不是使用tomcat的嵌入模式),让应用变成自启动程序。也可以通过程序控制建立多个tomcat实例。


    来源:http://blog.csdn.net/scorpio3k/article/details/7704641

    展开全文
  • Tomcat 多实例部署

    2019-04-27 12:26:51
    Tomcat 多实例部署前言一、Tomcat部署的基本概念二、多实例部署时间 前言 以前总是采用很 Low 的方式在同一台服务器上部署多个 Web应用,步骤是这样的:Copy Tomcat 目录 ——> 更改conf/server.xml 三个端口号 ...

    前言

    以前总是采用很 Low 的方式在同一台服务器上部署多个 Web应用,步骤是这样的:Copy Tomcat 目录 ——> 更改conf/server.xml 三个端口号 ——> 部署war 包 ——> 分别启动访问。

    这样是最简单的方式,但事实上是不推荐的,因为如果服务器资源有限,需要部署的应用数目一旦增加,会给服务器带来负担,我们可以充分利用 Tomcat 服务器的性能,减少资源浪费。具体的做法就是采用 “Tomcat多实例” 部署多应用:创建 Tomcat 多实例 ——> 更改 conf/server.xml 三个端口号 ——> 编写启动/关闭脚本 ——>分别启动实例并访问。在动手实践之前,需要对一些基本概念清楚,比如 CATALINA_HOME与 CATALINA_BASE分别指?webapps 下的 example、docs、ROOT目录能删除吗?

    参考资料《Tomcat架构解析》

    一、Tomcat部署的基本概念

    1. CATALINA_HOME与CATALINA_BASE分别指什么?

    CATALINA_HOME 指的是 Tomcat 的安装目录,在Windows下Tomcat的安装目录如下:

    在这里插入图片描述
    bin:Tomcat一些脚本存放目录,比如启动脚本startup.bat/startup.sh等

    conf:Tomcat配置文件所在目录,最主要的就是server.xml与web.xml

    lib:主要存放Tomcat依赖包

    logs:Tomcat日志所在目录。以为catalina、host-manager等开头日志

    temp:存放Tomcat运行时的临时文件,通常放一些缓存文件,一般不要删除

    webapps:应用部署所在目录,就是在这里存放我们需要部署的文件目录、WAR包

    work:存放由JSP文件生成的Servlet

    RUNNING.txt:运行说明,必需的一些环境信息

    NOTICE:通知信息,软件的版权信息等

    RELEASE-NOTES:发布说明,比如版本升级的功能说明

    LICENSE:版权许可证,软件版权信息

    CATALINA_BASE指的是Tomcat的实例所在目录,Tomcat的实例由除了bin、lib外的目录组成

    两者的对比图如下一目了然,那么接下来 配置多实例,也只需要 Copy 相应的目录组成新的 Tomcat 实例即可。

    在这里插入图片描述

    2. conf 目录下的配置文件具体来做什么?

    在这里插入图片描述
    Tomcat 的配置需要分为 : JVM 配置、服务器配置、Web应用配置、Tomcat 管理配置四个方面 (其中 JVM 的配置一般在 catalina.sh/catalina.bat中配置,这里不做介绍),这里只做简单的介绍,不会具体介绍 Tomcat 配置

    1) 服务器配置

    服务器配置主要集中于 $CATALINA_HOME/conf下的catalina.policy、catalina.properties、context.xml、server.xml、tomcat-users.xml、web.xml文件。

    2)Web应用配置
    web.xml 是Web应用的部署描述文件,它支持的元素及属性来自于 Servlet 规范定义。在Tomcat中,Web 应用的部署描述信息包括 $CATALINA_BASE/conf/web.xml 中的默认配置。

    Tomcat 的默认配置比Web 应用定制配置复杂很多,如果是完全基于JSP 的 Web 应用不需要添加任何定制配置。主要包括 ServletContext 的初始化参数、会话配置、Filter 定义与映射等

    3)Tomcat 管理配置

    主要是针对 host-manager 与 manager 两个功能进行配置,在 Timcat 中我们可以针对虚拟主机进行配置,也可以对我们的Web应用进行管理。

    3. webapps 下的目录哪些可以删除?
    Windows下查看webapps下的,包括docs、ROOT、manager、host-manager、examples。webapps不一定是Tomcat部署web应用唯一的地方,可以在任何一处,但只需要做好映射即可(context.xml描述文件或者Host的appBase属性可以做到)
    在这里插入图片描述
    事实上,全部都可以删除。为什么呢?这是因为

    1)ROOT:Tomcat 本身默认的访问 http://{ip}:{port},也就是访问 http://127.0.0.1:8080 标志性的Tomcat首页所在之处

    2)manager:访问http://{ip}:{port}/manager/html,可以管理部署应用(当然需要配置tomcat-users.xml文件)。一般部署Web应用往往是不需要的
    在这里插入图片描述

    3)host-manager:访问http://{ip}:{port}/host-manager/html,可以管理配置Host虚拟主机。一般简单web应用部署也不会用到

    在这里插入图片描述

    4)examples:Servlet、JSP、WebSocket示例,展示在Tomcat下如何使用等,访问http://{ip}:{port}/examples/index.html即可进入。也是不需要的,可以删除

    在这里插入图片描述

    5)docs:Tomcat HTML文档中心,不影响应用部署,可以删除

    4. Tomcat 为了避免端口冲突需要更改哪些端口?

    1) Server Port:该端口用于监听关闭 Tomcat 的shutdown命令,默认为 8005

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

    2) Connector Port:该端口用于监听 HTTP 的请求,默认为 8080

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

    3)AJP Port : 该端口用于监听 AJP (Apache JServ Protocol)协议上的请求,通常用于整合 Apache Server 等其他HTTP 服务器,默认为 8009.实际上可以不用管,因为 AJP 基本用不到,特别是Nginx 与 Tomcat 集成时(nginx 没有响应的支持 AJP ,模块,只有第三方模块支持 AJP 协议)

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

    4) Redirect Port:重定向端口,出现在Connectot 配置中,如果该 Connector 仅支持 非 SSL 的普通的 http 请求,那么端口会把 https 的请求转发到这个 Redirect Port 指定的端口,默认为 8443;

    简单的应用部署为避免端口冲突,实际上只需要更改 SHUTDOWN 监听端口 与 Connector 链接器监听端口即可。

    5. Tomcat 部署应用的方式有哪几种?

    1) Context 描述文件部署
    Tomcat 支持通过一个独立的 Context 描述文件配置并启动Web 应用,该文件的存储路径由 Host 中 xmlBase 属性指定,若不指定,则默认 CATALINA_BASE/conf/<Engine名称>/<Host名称>对于 Tomcat 默认的就是CLATALINA_BASE/conf/Catalina/localhost,其实也就是conf/context.xml文件:Tomcat启动时即会自动部署该Web应用

    2) Web部署
    即是以目录形式发布部署 Web 应用,赋值到 Host 指定 appBase 目录下即可完成部署。

    3)WAR 包部署
    xxx.war 包解压诚睦路形式而已。

    二、多实例部署时间

    主要以 apache-tomcat-9-0-14 为例 , 下载 tar 压缩包。

    1. 部署安装 Tomcat

    在已经由JDK环境的CentOS 下解压 tomcat 包即可

    在这里插入图片描述

    解压命令如下:

    tar -zxvf apache-tomcat-9.0.14.tar.gz
    

    2. 创建多实例

    创建 tomcat-instance 存放 tomcat_1、tomcat_2 与 tomcat_bin 目录

    在这里插入图片描述

    创建tomcat_1与tomcat_2实例,将conf webapps等文件copy到实例下的命令:

    mkdir tomcat_instance tomcat_instance/tomcat_1 tomcat_instance/tomcat_2 tomcat_instance/tomcat_bin
    cd apache-tomcat-9.0.14
    mv conf/ webapps/ temp/ logs/ work/ -t ../tomcat_1
    mv conf/ webapps/ temp/ logs/ work/ -t ../tomcat_2
    

    3. 更改端口
    进入tomcat_1/conf 与 tomcat_2/conf 下更改 server.xml 端口的SHUTDOWN 命令监听端口与 Connector 链接器监听端口

    tomcat_1/conf/server.xml:
    在这里插入图片描述

    tomcat_2/conf/server.xml:
    在这里插入图片描述

    4.编写脚本
    创建启动、关闭脚本(也可以重启脚本),进入 tomcat_bin/ 分别创建 startup.shshutdown.sh
    在这里插入图片描述

    startup.sh的shell脚本代码如下:

    # 指定CATALINA_HOME
    export CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.14
    # 通过参数的形式输入tomcat实例路径
    export CATALINA_BASE=${1%/}
    
    echo $CATALINA_BASE
    
    # 找到tomcat实例的进程ID
    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}) is running now , please shutdown it!";
        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
    

    shutdown.sh的脚本代码如下:

    export CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.14
    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
    

    5. 部署应用

    部署应用就跟平常一样在 webapps 下部署,或者 Context.xml 描述文件映射等,我们现在为了测试,简单引入html文件到 ROOT 目录下面,启动之后分别访问 http://{ip}:8081、http://{ip}:8082

    tomcat实例1 index.jsp首页

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Tomcat 多实例测试</title>
    </head>
    <body>
       <h1>Tomcat Instance 1</h1>
    </body>
    </html>
    

    tomcat实例2 index.jsp首页

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Tomcat 多实例测试</title>
    </head>
    <body>
       <h1>Tomcat Instance 2</h1>
    </body>
    </html>
    

    6. 启动应用

    启动脚本,传入正确实例路径,启动两个 tomcat 实例。

    启动tomcat实例1
    在这里插入图片描述
    启动tomcat实例2
    在这里插入图片描述

    7. 访问应用

    访问http://{ip}:8081
    在这里插入图片描述
    访问http://{ip}:8082
    在这里插入图片描述

    展开全文
  • tomcat 多实例部署

    千次阅读 2015-11-24 22:06:08
    如何以Tomcat多实例方式部署多个项目,以下以实例讲解: 情景:在linux系统部署两个项目video和navigator。 步骤: 1.新建目录:/home/hm/apps/ 2.tomcat安装包apache-tomcat-8.0.26.tar.gz解压缩到目录/home/...

    如何以Tomcat多实例方式部署多个项目,以下以实例讲解:

    情景:在linux系统部署两个项目video和navigator。

    步骤:

    1.新建目录:/home/hm/apps/

    2.tomcat安装包apache-tomcat-8.0.26.tar.gz解压缩到目录/home/hm/apps/apache-tomcat-8.0.26

    3.新建目录/home/hm/apps/tomcat-instances/

    3.部署video:

    (1)/home/hm/apps/tomcat-instances/下新建目录video

    (2)在video目录下新建目录:conf,bin,webapps,logs,work

    (3)将/home/hm/apps/apache-tomcat-8.0.26/conf/目录下的配置文件:server.xml, web.xml,tomcat-users.xml这三个配置文件复制到/home/hm/apps/tomcat-instances/video/conf目录下。

    修改server.xml中的四个端口:

    a.<Server port="${tomcat.server.port}" shutdown="SHUTDOWN">

    b.<Connector port="${tomcat.http.port}" protocol="HTTP/1.1"    connectionTimeout="20000"   redirectPort="${tomcat.https.port}" />

    c.<Connector port="${tomcat.ajp.port}" protocol="AJP/1.3" redirectPort="${tomcat.https.port}" />

    具体端口在启动脚本中设置

    (4)在home/hm/apps/tomcat-instances/video/bin/目录下新建启动和停止脚本:start.sh和stop.sh。在启动脚本中设置端口。

    start.sh:

    #!/bin/bash
    export CATALINA_HOME="/home/hm/apps/apache-tomcat-8.0.26"
    export CATALINA_BASE="/home/hm/apps/tomcat_instances/video"
    export CATALINA_OPTS="-Dtomcat.server.port=8071 -Dtomcat.http.port=8072 -Dtomcat.ajp.port=8073 -Dtomcat.https.port=8074 -Dtomcat.instance.name=video"
    export CATALINA_OUT=${CATALINA_BASE}"/logs/catalina.$(date +'%Y-%m-%d').out"
    export CATALINA_PID=${CATALINA_BASE}"/tomcat.pid"

    rm -rf ${CATALINA_BASE}"/work"
    $CATALINA_HOME/bin/catalina.sh start
    exit $?

    stop.sh:

    #!/bin/bash
    export CATALINA_HOME="/home/hm/apps/apache-tomcat-8.0.26"
    export CATALINA_BASE="/home/hm/apps/tomcat_instances/video"
    export JAVA_OPTS="-Dtomcat.server.port=8071"
    export CATALINA_PID=$CATALINA_BASE"/tomcat.pid"
    $CATALINA_HOME/bin/catalina.sh stop 0 -force


    (5) 将video的war包放在webapps目录下

    (6)启动和停止服务:在video目录下执行:sh bin/start.sh和sh bin/stop.sh



    4.部署navigator

    (1)/home/hm/apps/tomcat-instances/下新建目录navigator

    (2)在navigator目录下新建目录:conf,bin,webapps,logs,work

    (3)将/home/hm/apps/apache-tomcat-8.0.26/conf/目录下的配置文件:server.xml, web.xml,tomcat-users.xml这三个配置文件复制到/home/hm/apps/tomcat-instances/navigator/conf目录下。

    修改server.xml中的四个端口:

    a.<Server port="${tomcat.server.port}" shutdown="SHUTDOWN">

    b.<Connector port="${tomcat.http.port}" protocol="HTTP/1.1"    connectionTimeout="20000"   redirectPort="${tomcat.https.port}" />

    c.<Connector port="${tomcat.ajp.port}" protocol="AJP/1.3" redirectPort="${tomcat.https.port}" />

    具体端口在启动脚本中设置

    (4)在home/hm/apps/tomcat-instances/navigator/bin/目录下新建启动和停止脚本:start.sh和stop.sh。在启动脚本中设置端口。

    start.sh:

    #!/bin/bash
    export CATALINA_HOME="/home/hm/apps/apache-tomcat-8.0.26"
    export CATALINA_BASE="/home/hm/apps/tomcat_instances/
    navigator"
    export CATALINA_OPTS="-Dtomcat.server.port=80
    81 -Dtomcat.http.port=8082 -Dtomcat.ajp.port=8083 -Dtomcat.https.port=8084 -Dtomcat.instance.name=navigator"
    export CATALINA_OUT=${CATALINA_BASE}"/logs/catalina.$(date +'%Y-%m-%d').out"
    export CATALINA_PID=${CATALINA_BASE}"/tomcat.pid"

    rm -rf ${CATALINA_BASE}"/work"
    $CATALINA_HOME/bin/catalina.sh start
    exit $?

    stop.sh:

    #!/bin/bash
    export CATALINA_HOME="/home/hm/apps/apache-tomcat-8.0.26"
    export CATALINA_BASE="/home/hm/apps/tomcat_instances/
    navigator"
    export JAVA_OPTS="-Dtomcat.server.port=80
    81"
    export CATALINA_PID=$CATALINA_BASE"/tomcat.pid"
    $CATALINA_HOME/bin/catalina.sh stop 0 -force


    (5) 将navigator的war包放在webapps目录下

    (6)启动和停止服务:在video目录下执行:sh bin/start.sh和sh bin/stop.sh


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 731
精华内容 292
关键字:

tomcat多实例部署