• tomcat单机多实例


    Tomcat单机多实例

     

    Tomcat的目录结构:

    bin – 包含所有运行tomcat的二进制和脚本文件

    lib – 包含tomcat使用的所有共享库

    conf - 包含配置信息,如tomcat绑定的端口等

    l server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;

    l tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;

    l web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!

    l context.xml:对所有应用的统一配置,通常我们不会去配置它。

    logs – 包含所有的日志文件

    temp – 此目录是tomcat存放的临时文件

    webapps  此目录非常重要,这里存放所有的应用程序war包(项目包). 存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/1607a,进入示例项目。其中1607a就是项目名,即文件夹的名字。

    work – 如果应用程序包含jsp文件,那么每个jsp文件会被编译转化为servlet,存放于此,运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

    运行Tomcat时,会用到5个环境变量:

    CATALINA_HOME

    CATALINA_BASE

    CATALINA_TMPDIR

    JRE_HOME/JAVA_HOME

    CLASSPATH

    在以上列表中,CATALINA_HOME和JAVA_HOME是必要的环境变量。其它的都可以通过CATALINA_HOME来转换,是可选的。

    CATALINA_HOME – 此环境变量是tomcat安装/提取的根目录。所以通过CATALINA_HOME,可以得到bin和lib目录。

    CATALINA_BASE – 如果不指定则是CATALINA_HOME的值。该变量指向的目录里面包括每个运行实例需要使用自己的conf、logs、temp、webapps、work目录。

    一般运行Tomcat的方法是,只设置CATALINA_HOME变量,执行startup.sh脚本,startup.sh会自动转换其它未设置的变量。

    当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低。因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中。但当服务器配置很高的情况下,如:32G内存,16核的CPU。这样一台高配的机器上只装一个Tomcat实例,会有点浪费。其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源。你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护。假设你在一台机器上安装了5个Tomcat实例,日后要升级Tomcat时,你需要将新版本的tomcat复制并覆盖掉旧的5个tomcat安装程序和配置,所以还是挺麻烦的。下面介绍多个Tomcat实例共享同一个安装包的配置方法。

    安装部署环境:

    Jdk版本以及安装目录:

    Jdk版本:1.8.0_20  目录:/usr/java

    Tomcat版本apache-tomcat-7.0.47.tar.gz

    Tomcat安装目录:/usr/local/tomcat_all

    Tomcat中两个实例的目录(组成一个小集群):

    /usr/local/tomcats/tomcat1

    /usr/local/tomcats/tomcat2

    安装jdk

    # rpm -ivh jdk-8u20-linux-x64.rpm

    添加环境变量:

    # vi /etc/profile

    ######java use####

    export JAVA_HOME=/usr/java/jdk1.8.0_20

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    验证是否安装成功:

    # source /etc/profile

    # java –version

    安装Tomcat:

    关闭防火墙selinux

    # service  iptables  stop

    # vi /etc/selinux/config

    # tar zxf apache-tomcat-7.0.47.tar.gz

    # mv apache-xxxxx /usr/local/tomcat_all

    # cp –r  apache-tomcat-7.0.47 /usr/local/tomcat_all

    拷贝Tomcat安装目录下conf目录分别到两个实例的目录中。

    # mkdir /usr/local/tomcats

    # mkdir /usr/local/tomcats/tomcat1

    # mkdir /usr/local/tomcats/tomcat2

    # cp -r /usr/local/tomcat_all/conf/ /usr/local/tomcats/tomcat1/

    # cp -r /usr/local/tomcat_all/conf/ /usr/local/tomcats/tomcat2/

    分别修改以上两个实例中server.xml中三个端口(Server、HTTP、AJP),不要和其它实例的端口或系统已经占用的端口发生冲突。

    # vi  /usr/local/tomcats/tomcat1/conf/server.xml

    # vi  /usr/local/tomcats/tomcat2/conf/server.xml

    创建实例部署的应用目录(可以不修改,直接放在Tomcat_all安装目录的webapps目录中,如果重新设置,需要到server.xml中进行配置项修改appBase)。

    创建启动和停止脚本:

    启动脚本:

    # cd /usr/local/tomcat/tomcat1

    # mkdir bin

    # vi startup.sh

    #!/bin/bash

    export JRE_HOME=/usr/java/jdk1.8.0_20/jre

    export CATALINA_HOME=/usr/local/tomcat_all

    export CATALINA_BASE="/usr/local/tomcats/tomcat1"

    export CATALINA_TMPDIR="$CATALINA_BASE/temp"

    export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"

    #创建logs目录

    if [ ! -d "$CATALINA_BASE/logs" ]; then

      mkdir $CATALINA_BASE/logs

    fi

    #创建temp目录

    if [ ! -d "$CATALINA_BASE/temp" ]; then

      mkdir $CATALINA_BASE/temp

    fi

    # 调用tomcat启动脚本

    bash $CATALINA_HOME/bin/startup.sh "$@"

    # chmod +x startup.sh

    同理做Tomcat2的即可。

    停止脚本:

    # cd /usr/local/tomcat/tomcat1/bin

    # vi shutdown.sh

    #!/bin/bash

    export JRE_HOME=/usr/java/jdk1.8.0_20/jre

    export CATALINA_HOME=/usr/local/tomcat_all

    export CATALINA_BASE="/usr/local/tomcat/tomcat1"

    export CATALINA_TMPDIR="$CATALINA_BASE/temp"

    export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"

    bash $CATALINA_HOME/bin/shutdown.sh "$@"

    # chmod +x shutdown.sh

    Tomcat2中做相应的修改即可。

    服务器启动之后,会分别在相应的实例目录下生成logs、temp、work和webapps目录。另外也可以在实例目录下创建lib目录,用于存放app的jar。现在来看实例的安装目录,就和tomcat的安装包解压后的目录结构一样了,但所有实例共享同一套tomcat安装程序的bin和lib。后面如果需要升级tomcat或修改tomcat脚本的相关配置,只需要更新这一套程序就行,也方便了日后的维护。

    Tomcat配置文件中端口号:

    Shutdown port – 此端口用于关闭Tomcat。当执行shutdown.sh脚本时,它会给此端口发出一个信号,Tomcat的进程会监听此端口,如果接收到这样的信号,进程会清理退出。

    Connector port - 此端口是应用对外公开发布的端口。

    ajp port – Web服务器(例如Apache的httpd Server)通过此端口和Tomcat进行通信,也可以使用它设置一个负载均衡服务器。

    上面配置了配置server port =8105,connector port = 8081,ajp port = 8109

    Redirect port – 如果此Connector支持非SSL请求和接收SSL请求,Catalina会自动将请求指向到此端口

  • 相关阅读:
    Modern C++ Course [Lecture 3] {CMake, Google Test, Namespaces, Classes}
    Modern C++ Course [Lecture 2] {Compilation, Debugging, Functions, Header/Source, Libraries, CMake}
    Modern C++ Course [Lecture 0] {Course Introduction and Hello World} & [Lecture 1] {Variables, Basic Types, Control Structures}
    RASPBERRY PI LINUX LESSON: From 29th to Final Project
    RASPBERRY PI LINUX LESSON: From 16th to 28th
    RASPBERRY PI LINUX LESSON: From 1st to 15th
    vscode spring boot配置文件application.properties不提示解决方式
    JdbcTemplate增删改查
    Spring注解@ConfigurationPropertie
    [转载]Spring下IOC容器和DI(依赖注入) @Bean及@Autowired
  • 原文地址:https://www.cnblogs.com/luyuheng/p/11646280.html
Copyright © 2020-2023  润新知