Tomcat 安装部署

JVM、JRE、JDK 简介

JVM(JavaVirtualMachine-Java虚拟机)

  • JVM就是我们耳熟能详的<Java虚拟机>,它就相当于一台<虚拟机>,它的核心任务就是实现<跨平台性>。
  • JVM主要功能:
  1. 实现:跨平台性
  2. 解析:Java编译生成的<.class文件>(操作系统不能直接识别.class文件,必须借助JVM来解析)
  3. 承载:Java应用程序,例如:在多实例tomcat应用场景中,就是在一台<JVM虚拟机>中运行了多个<Tomcat实例>

JRE(JavaRuntimeEnvironment-Java运行时)

  • JRE就是<JVM + .class基础类文件>的集合,从而最终为<Java应用程序>提供一个<Java运行时环境>。
  • 当我们只想运行一个<java应用程序>,而不是做<Java开发>,则仅仅只需安装JRE即可,无需安装JDK。

JDK(JavaDevelopmentKit-Java开发工具包)

JDK是一个Java开发工具包,它提供了完整的<开发、编译、运行、调试 … 等>开发环境。
它包含着:

  1. JRE(即:JVM + .class基础类文件)
  2. JAVA编译器(即:将java文件编译成为.class类文件) … 等等<开发所需的完整组件>

图解:JVM、JRE、JDK、Tomcat之间的关系

Tomcat概述

Tomcat概述

★ Tomcat官网:Apache Tomcat® - Welcome!
Tomcat是Apache 软件基金会(Apache Software Foundation)的核心开源项目。
Tomcat技术先进、性能稳定,开源免费,深受Java开发者的喜爱,是开发和调试JSP程序的首选,成为目前比较流行的<Web应用服务器>。

  • Nginx 主要用于:<HTML静态网页>。
  • Apache Httpd 主要用于:<HTML静态网页>。
  • Apache Tomcat 主要用于:<Java类的动态网站>,Apache Tomcat 也可处理<HTML静态网页>,但是性能不如<Apache和Nginx>。

Tomcat的应用场景

  • 我们通常采用<Httpd服务器 或 Nginx服务器>作为<前端服务器>,采用<Tomcat服务器>作为<后端服务器>。
    • <前端服务器>直接面向用户,针对<HTML(超文本标签语言)静态页面>的<访问请求>,<前端服务器>可以直接予以响应
    • 针对<JSP动态页面>的<访问请求>,<前端服务器>则采用反向代理的方式,转发给<后端服务器>来处理。

安装Tomcat 实例

了解:Tomcat与JAVA之间的关系

  • Tomcat必须运行在JRE(JAVA运行时)环境中,因此在安装Tomcat之前,必须事先安装JRE。
  • JAVA官方下载:https://www.oracle.com/java/technologies/downloads/archive/
  • 针对:<Tomcat 5.5及之前的低版本>
    • <Tomcat服务端>:必须安装,因为JDK提供了<Java编译器>。
  • 针对:<Tomcat 6.0及之后的高版本>
    • 在<开发环境>中:<Tomcat服务端>必须安装。
    • 在<生产环境>中:<Tomcat服务端>仅须安装<JRE(server-jre)>即可,因为Tomcat已经集成了<Java编译器>。
  • 了解:Tomcat与JAVA之间的<版本对应关系>
    https://tomcat.apache.org/whichversion.html

环境说明:

节点角色IP地址操作系统硬件规格
tomcatTomcat动态网站服务器192.168.19.128/24Rocky Linux 9.51 vCPU、1GB 内存

安装:Tomcat实例

二进制安装:Tomat11
wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.24/bin/apache-tomcat-11.0.24.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jre/x64/linux/OpenJDK17U-jre_x64_linux_hotspot.tar.gz
  1. 安装:JRE 17+
tar -axf OpenJDK17U-jre_x64_linux_hotspot_17.0.19_10.tar.gz -C /opt/
mv /opt/jdk-17.0.19+10-jre/ /opt/jre-17
  • 设置:针对 JAVA 的用户登录环境变量
cat > /etc/profile.d/java.sh <<EOF
export PATH=/opt/jre-17/bin/:\$PATH
export JAVA_HOME="/opt/jre-17"
EOF
source /etc/profile.d/java.sh
java -version
  1. 安装:Tomcat 11+
tar -axf apache-tomcat-11.0.24.tar.gz -C /opt
mv /opt/apache-tomcat-11.0.24 /opt/tomcat-11
  • 设置:Tomcat运行时所需的<setenv.sh环境变量脚本文件>
    • <Tomcat实例>需要的<环境变量>:
    • 环境变量1:CATALINA_HOME(必须) 用于设置:<Tomcat二进制发行版>的<安装目录>。
    • 环境变量2:CATALINA_BASE(可选) 用于设置:<Tomcat二进制发行版>的<工作目录>。
      • 每个<工作目录>对应着一个<Tomcat实例>。
      • 默认值为 CATALINA_BASE=$CATALINA_HOME。
    • 环境变量3:CATALINA_PID(必须) 用于设置:<Tomcat二进制发行版>的<PID进程文件>。
    • 环境变量4:JRE_HOME或JAVA_HOME 用于指定:Java运行时环境或用于启动Tomcat的Java开发工具包的位置。
      • JRE_HOME 用于指定:JRE的位置。
      • JAVA_HOME 用于指定:JDK的位置。
      • 必须二选一,如果JRE_HOME和JAVA_HOME同时使用,则JRE_HOME最终生效。
cat > /opt/tomcat-11/bin/setenv.sh <<EOF
export JRE_HOME="/opt/jre-17"
export CATALINA_HOME="/opt/tomcat-11"
export CATALINA_BASE="\$CATALINA_HOME"
export CATALINA_PID="\$CATALINA_BASE/tomcat.pid"
EOF
  1. 启动:Tomcat 11+
  • 启动:Tomcat实例
echo "/opt/tomcat-11/bin/startup.sh" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
/opt/tomcat-11/bin/startup.sh
  • 停止:Tomcat实例
/opt/tomcat-11/bin/shutdown.sh
  1. 配置:防火墙
netstat -tunlp | grep java 
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
  1. 查看:Tomcat目录结构
ll /opt/tomcat-11
  1. 设置:针对Tomcat的<用户登录环境变量>,方便执行管理命令
cat > /etc/profile.d/tomcat.sh <<EOF
export CATALINA_HOME="/opt/tomcat-11"
export CATALINA_BASE="\$CATALINA_HOME"
export PATH="\$CATALINA_HOME/bin:$PATH"
EOF
source /etc/profile.d/tomcat.sh
  1. 访问:Tomcat首页

http://192.168.19.128:8080
在这里插入图片描述

YUM安装:Tomcat 9
  1. 安装:JRE 17+ 和 Tomcat 9
 yum install -y java-17-openjdk* tomcat* --disablerepo=epel

–disablerepo=epel 禁用:EPEL源,防止版本冲突

  1. 启停:Tomcat 9
systemctl enable tomcat ## 设置:开机自启动
systemctl start tomcat ## 当前:立即启动
systemctl status tomcat ## 查看:启动状态
systemctl restart tomcat ## 当前:立即重启
systemctl stop tomcat ## 当前:立即停止
  1. 配置:防火墙
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
  1. 禁用:SELinux安全上下文机制
if ! [[ $(getenforce) == "Disabled" ]]; then
sed -r -i '/^[ \t]*SELINUX=/c\SELINUX=disabled' /etc/selinux/config
reboot
fi 
  1. 查看:Tomcat目录结构
ls -l /usr/share/tomcat # 查看:YUM安装的<Tomcat实例的目录结构>
  1. 设置:针对Tomcat的<用户登录环境变量>,方便执行管理命令
cat > /etc/profile.d/tomcat.sh <<EOF
export JAVA_HOME="/usr/lib/jvm/java"
export CATALINA_HOME="/usr/share/tomcat"
export CATALINA_BASE="\$CATALINA_HOME" 
EOF
source /etc/profile.d/tomcat.sh
  1. 访问:Tomcat首页

http://192.168.19.128:8080

Tomcat端口说明

8080/tcp 负责侦听:http:// ## <HTTP协议>的<访问请求>

8443/tcp 负责侦听:https:// ## <HTTP+SSL协议>的<访问请求>

8009/tcp 负责侦听:AJP:// ## <AJP协议>的<访问请求>

  • 通常用于:与<其他 HTTP 服务器,如 httpd>进行<业务整合>,实现彼此之间的<通信>

<Tomcat 实例>可以采用<AJP 协议>来接收并响应<其他 HTTP 服务器>的<动态资源请求>

  • 安全建议:不要对<客户端>开放这个<8009/tcp 端口>,仅对<指定的其他 httpd 服务器>开放

8005/tcp 负责侦听:关闭 tomcat 的<SHUTDOWN 命令>,从而实现<远程关闭 Tomcat>

  • 默认仅侦听:127.0.0.1:8005 套接字
  • 关闭的方法:
which telnet || yum install -y telnet
telnet 127.0.0.1 8005 ## 本地连接:8005端口
SHUTDOWN ## 本地执行:关闭指令(大小写敏感)

Tomcat管理性访问控制

客户端IP-管理性-访问控制

★ 注意:

  • 在YUM安装中 ,默认:允许<任意客户端IP的访问>。
  • 在二进制安装中,默认:拒绝<任意客户端IP的访问>,仅允许<127.0.0.1的访问>。
  1. 配置允许:访问<Host Manager虚拟主机管理>的<客户端IP地址> ◀ 支持使用:正则表达式
cat $CATALINA_BASE/webapps/host-manager/META-INF/context.xml
configFile="$CATALINA_BASE/webapps/host-manager/META-INF/context.xml"
sed -i -r 's/(^\s*allow=).*/\1"0.0.0.0\/0,::\/0" \/>/' $configFile
cat $configFile

(2) 配置允许:访问<Manager APP应用发布管理、Server Status服务器状态查看>的<客户端IP地址> ◀ 支持使用:正则表达式

configFile="$CATALINA_BASE/webapps/manager/META-INF/context.xml"
sed -i -r 's/(^\s*allow=).*/\1"0.0.0.0\/0,::\/0" \/>/' $configFile
cat $configFile

(3) 配置允许:访问<Documentation和Configuration帮助文档>的<客户端IP地址控制> ◀ 支持使用:正则表达式

configFile="$CATALINA_BASE/webapps/docs/META-INF/context.xml"
sed -i -r 's/(^\s*allow=).*/\1"0.0.0.0\/0,::\/0" \/>/' $configFile
cat $configFile

(4) 配置允许:访问<Examples示例文件>的<客户端IP地址> ◀ 支持使用:正则表达式

configFile="$CATALINA_BASE/webapps/examples/META-INF/context.xml"
sed -i -r 's/(^\s*allow=).*/\1"0.0.0.0\/0,::\/0" \/>/' $configFile
cat $configFile
  1. 用户角色-管理性-访问控制
  • Tomcat的<HTML接口>采用了<CSRF跨站域请求伪造>保护机制,从而防止应<CSRF漏洞>而产生冒名顶替的网络攻击。
  • 注意:
    • 在YUM安装中,默认未授权:<用户角色>的<管理性访问控制>,对应的配置文件为 $CATALINA_BASE/conf/tomcat-users.xml。
    • 在源码安装中,默认未授权:<用户角色>的<管理性访问控制>,对应的配置文件为 $CATALINA_BASE/conf/tomcat-users.xml。
  • 用户角色说明:

- manager-status 角色:可访问【Server Status 服务器状态查看页面】

- manager-gui 角色:可访问【Manager APP应用发布管理页面】和【Server Status 服务器状态查看页面】
- manager-script 角色:仅可访问【文本界面】和【Server Status 服务器状态查看页面】
- manager-jmx 角色:仅可访问【JMX代理】和【Server Status 服务器状态查看页面

注意:该【manager-gui】不能和【manager-script】或【manager-jmx】在一起使用


- admin-gui 角色:可访问【Host Manager虚拟主机管理页面】
- admin-script 角色:仅可访问【文本界面】

注意:该【admin-gui】不能和【admin-script】在一起使用


  1. 授权
adminName='admin'
adminPassword='a123456!'
cat > $CATALINA_BASE/conf/tomcat-users.xml <<EOF
<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
<role rolename="admin-gui"/> 
<role rolename="admin-script"/> 
<role rolename="manager-gui"/> 
<role rolename="manager-script"/> 
<role rolename="manager-jmx"/> 
<role rolename="manager-status"/> 
<user name="$adminName" password="$adminPassword" roles="manager-gui,admin-gui" /> 
</tomcat-users> 
EOF
  1. 重启
systemctl restart tomcat # ────针对:YUM 安装 
 /opt/tomcat8/bin/shutdown.sh # 先停止┬ 针对:二进制安装 
 /opt/tomcat8/bin/startup.sh  # 后启动┘

Tomcat 配置文件解析

了解:Tomcat与 Servlet

  • Tomcat 是:运行在JRE中的一个<进程实例>,也称之为<Web容器>。
  • Servlet 是:运行在<WebAPP应用>中的<服务器端Java程序>,每一个Servlet用于处理一类业务逻辑,如:登录、注册、购物车。
  • Tomcat与Servlet关系图:

了解:Tomcat目录结构

which tree || yum install -y tree
tree -L 1 -N /opt/tomcat-11

了解:Tomcat配置文件

tree -N /opt/tomcat-11/conf
  • $CATALINA_BASE/conf/catalina.policy 配置文件
    • 用于定义:<Tomcat实例>中<Java Class类>的<安全策略>
    • 它包含着:系统代码、Web应用程序、Catalina本身的<权限定义>
  • $CATALINA_BASE/conf/catalina.properties 配置文件
    • 用于定义:<Tomcat实例>中<Java Class类>的<标准Java属性>
    • 它包含着:<安全设置>、<类加载设置>、<类扫描设置>、和<字符串缓存设置>四大块信息。
  • $CATALINA_BASE/conf/logging.properties 配置文件
    • 用于定义:<Tomcat实例>内置的<日志记录功能>
    • 它包含着:<阈值>和<日志位置>等内容
  • $CATALINA_BASE/conf/context.xml 配置文件
    • 用于定义:应用于的<全局性上下文对象>,例如:定义虚拟目录、配置session会话保持等等。
    • 它的特点:Tomcat将会定时查看,一旦变化,自动重载。
  • $CATALINA_BASE/conf/server.xml 配置文件(很重要)
    • 用于定义:<Tomcat Servlet/JSP容器>的行为,这是<Tomcat实例>的<主要配置文件>
      它使用<JavaServlet规范中指定的分层语法>来配置<Catalina的初始状态>以及<Tomcat引导和构建各种组件的顺序>。
    • 它的特点:不能动态重载,一旦变化,必须手动重启。
  • $CATALINA_BASE/conf/tomcat-users.xml
    • 用于定义:<Realm数据库>需要使用的<用户、密码、角色>信息,从而实现<用户认证和授权>。
  • $CATALINA_BASE/conf/web.xml配置文件
    • 用于定义:应用于的<全局性Servlet容器默认配置>。
    • 它包含着:Servlet、Filter、Session、MIME、Welcome等等设置。

了解:server.xml(运维人员关注)

  • server.xml配置:<Tomcat Servlet/JSP容器>的行为,<运维人员>会关注<server.xml配置文件>。
  • server.xml特点:不能动态重载,一旦变化,必须手动重启。
  • server.xml包含如下<常用元素>:
  • Server 根元素
    • Listener 监听器元素
    • GlobalNamingResources 全局命名资源元素
    • Service 服务元素
      • Connector 连接器元素
      • Engine 引擎元素
        • Realm 领域元素
        • Host 虚拟主机元素
          • Valve 阀门元素
  • 运作机制:

Server根元素

  • <Server根标签>:
    • 它是:是一个<顶级标签>,一个<Server根标签>就代表着一个<Tomcat实例>,也称为<Catalina servlet容器 或 Catalina实例>。
    • 它是:整个server.xml的<top根元素>
      在一个<Server服务器标签>中,可以包含:一个或多个<Service服务标签>
<Server port="8005" shutdown="SHUTDOWN">

port 属性:定义<SHUTDOWN 命令>的<侦听端口>

shutdown 属性:定义<SHUTDOWN 命令>

Listener 监听器元素

  • <Listener监听器标签>:
    • 它负责:监听<特定事件>,当<特定事件>触发时,<Listener监听器>会捕捉到该<特定事件>,并做出相应处理。
    • <Listener监听器>通常用于:Tomcat的<启动和关闭>过程。
<!-- org.apache.catalina.startup.VersionLoggerListener(启动过程监听器)
    应是:第一个 Listener 监听器。
    负责:监听 tomcat 启动过程,并会记录 Tomcat、Java 和操作系统信息。
-->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- org.apache.catalina.security.SecurityListener(安全检查监听器)
负责:在 Tomcat 启动时,执行许多安全检查,如果安检失败,则阻止 Tomcat 启动。
      默认未启用。
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!-- org.apache.catalina.core.AprLifecycleListener(APR/native 本机库监听器)
    负责:检查 APR/native 本地库是否存在,并加载 APR/native 本地库
-->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- org.apache.catalina.core.JreMemoryLeakPreventionListener(预防 JRE 内存泄漏监听器)
      org.apache.catalina.mbeans.GlobalResourcesLifecycleListener(全局资源生命周期侦听器)
      org.apache.catalina.core.ThreadLocalLeakPreventionListener(线程池中线程自动续订复用监听器)
      以上三个监听器,负责:防止由于使用<特定的 java/javax API>而导致的<内存泄漏>。
-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

GlobalNamingResources全局命名资源元素

<GlobalNamingResources 全局命名资源标签>:

  • 定义:整个的、单独的<全局性JNDI资源>
    • JNDI 它是:Java命名及目录接口(Java Naming and Directory Interface)
      • 提供:统一的<客户端API接口>,例如:数据库连接。
<GlobalNamingResources>
<!-- 默认配置:
  ♦ 通过<org.apache.catalina.users.MemoryUserDatabaseFactory 类>来加载<指定的 conf/tomcat-users.xml 配置文件>,
    从而在内存中创建一个<MemoryUserDatabase 数据库对象实例>,进而执行<用户和角色验证>。
    name 属性:定义<全局命名资源>的<资源对象名>
    type 属性:定义<全局命名资源>的<Java 类名>
      org.apache.catalina.UserDatabase 是<Tomcat Realm 数据库接口>的一种实现,不适用于大规模生产。
      org.apache.catalina.UserDatabase 可以从<conf/tomcat-users.xml 配置文件>加载<用户及角色>信息。
      针对此处定义<Tomcat Realm 数据库接口资源对象>的,我们可以通过<Realm 元素>来加以调用。
    description 属性:定义<描述性信息>
    factory 属性:定义<创建对象的工厂>
            这里配置是:采用名为<org.apache.catalina.users.MemoryUserDatabaseFactory>的工厂,依据名为
            <org.apache.catalina.UserDatabase 类>,来创建一个<Tomcat Realm 数据库实例对象>。
    pathname 属性:定义<Tomcat Realm 数据库实例对象>需加载的<conf/tomcat-users.xml 配置文件>
-->
<Resource name="UserDatabase" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>

Service服务元素

  • 定义:<所有WebApp应用程序>可共享使用的和,从而实现<完整的功能模块>。
    • 会自动在<conf 目录>和<work 目录>中,创建一个<Service 服务标签名称>的<子目录>
    • 每一个<Service 服务标签>:可以关联着一个或多个<Connector 连接器标签>
    • 每一个<Service 服务标签>:仅可关联着一个<唯一的Engine引擎标签>
    • <name 属性>:可自定义名称,但须确保<同一个Server服务器标签>中的<Service 名称唯一性>
  • 一个<Server 元素>中可以包含:一个或多个<Service 元素>。
<!- 
  name 				属性:	定义<Service 元素><标签名> 
  className 	属性:	指定需要使用的<class implementation 指定名称的类实现> 
                    如果未指定,将默认采用<standard implementation 标准的类实现>
-->
<Service name="Catalina">

Connector连接器元素

  • <Connector 连接器标签>:
    • 定义:<具体的连接器>,用于侦听<客户端>的<接口参数>,如:端口、协议、连接超时、重定向端口。
<!-- 定义:基于 HTTP/1.1 协议的连接器(非 SSL),侦听 8080/tcp 端口 -->
<Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443"
            maxParameterCount="1000" <!-- 设置:GET  POST 请求中的最大参数个数 -->
/>
<!-- 定义:需要共享使用:哪一个<Executor 执行器>所定义的<共享线程池>,默认情况下,并未定义<Executor 执行器> -->
<!--
<Connector executor="tomcatThreadPool"
            port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443"
            maxParameterCount="1000" <!-- 设置:GET  POST 请求中的最大参数个数 -->
            />
-->
<!-- 定义:基于org.apache.coyote.http11.Http11NioProtocol 协议的连接器(SSL),侦听8443/tcp 端口--> 
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
            maxThreads="150" SSLEnabled="true" 
            maxParameterCount="1000 
  <SSLHostConfig> 
    <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" 
                  type="RSA" /> 
  </SSLHostConfig> 
</Connector>
-->
<!-- 定义:基于org.apache.coyote.http11.Http11AprProtocol 协议的连接器(SSL),侦听8443/tcp SSL 端口-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
          maxThreads="150" SSLEnabled="true" 
          maxParameterCount="1000"
          >
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
  <SSLHostConfig>
    <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                certificateFile="conf/localhost-rsa-cert.pem"
                certificateChainFile="conf/localhost-rsa-chain.pem"
                type="RSA" />
  </SSLHostConfig>
</Connector> 
<!-- 定义:基于AJP 协议的连接器,侦听8009/tcp 端口--> 
<!--
  <Connector protocol="AJP/1.3"
    address="::1" 
    port="8009"
    redirectPort="8443" 
    maxParameterCount="1000"
    />
-->

Engine 引擎元素

  • <Engine引擎标签>:
    • 定义:<处理每个请求>的<入口点>,<引擎名称>是<Catalina 卡特琳娜>
      • 负责分析<请求中的HTTP报头>,然后传递给<Host 虚拟主机>
      • 在一个<Engine 引擎标签 >中,可以包含:多个<Host 主机标签>,但须确保<Host 名称唯一性>
  • 注意:每一个<Service 服务标签>仅可关联一个唯一性的<Engine 引擎标签>。
<!--
name 				属性:定义<Engine 元素>的<标签名>
defaultHost 属性:定义接收并响应<客户端请求>的<默认 Host 虚拟主机>,注意:该<Host 虚拟主机名>必须已定义
jvmRoute 		属性:针对基于 AJP 协议的<负载均衡>,定义作为<后端节点>的<本机节点名称>
-->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
  <Engine name="Catalina" defaultHost="localhost">

Realm元素

  • <Realm 领域标签>:
    • 定义:用于<用户认证和授权>的<数据库>,<数据库>包含着用户名、密码、角色。
      • 通过不同的<realm 实现>,我们可以将<Tomcat 实例>集成到不同的<身份验证>信息环境中,从而保障<Tomcat 实例>的安全性。
    • 我们可以在<Engine、Host 或 context>中定义<Realm 标签>。
<!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack -->
<!-- 使用LockOutRealm(锁定区域)来防止试图通过暴力攻击来猜测用户密码-->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- 通过引用<GlobalNamingResources 元素>中定义的<名为UserDatabase 的Resource 资源对象>,来启用<用户认证和授权> -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
      resourceName="UserDatabase"/>
</Realm>

Host虚拟主机元素

  • - 定义: - 一个中可以包含一个或多个。
<!--
name 				属性:name="localhost",可以是localhost 或FQDN 名
            <Tomcat 实例>会根据<name 属性值>,在<Service 服务标签名目录>中,自动创建<同名目录>
appBase 		属性:appBase="webapps",设置:<war 工程包>自动解压的<基础目录>,可是<相对/绝对路径>
unpackWARs 	属性:unpackWARs="true",设置:开启<Web 工程包>的<自动解压功能> 
autoDeploy 	属性:autoDeploy="true",设置:开启<Web 工程包>的<自动发布功能>,可实现热部署 
workDir 		属性:workDir="webapps/work",设置:<Web 工程包>的<临时工作目录>,可是<相对/绝对路径>
                <相对路径>:是相对于<$CATALINA_BASE 目录> 
                <绝对路径>:可自定义
-->
<Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true">
</Host>

Valve阀元素

  • <Valve 元素>:
    • 它是:可以在<Engine、Host 或 Context> 的<请求处理管道>中插入的<组件>,每一个<Valve 元素> 可以用来实现<不同的处理能力>。
<!-- 定义:<访问日志文件>的<文件名及其内容格式>,如:localhost_access_log.txt -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log" suffix=".txt" 
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />

了解:context.xml(运维人员/开发人员关注)

  • context.xml 定义:应用于的<上下文对象>,例如,定义虚拟目录、配置session 会话保持等等。
  • context.xml 特点:Tomcat 将会定时查看,一旦变化,自动重载。
  • 解读:$CATALINA_BASE/conf/context.xml(全局性配置)
cat $CATALINA_BASE/conf/context.xml 

了解:web.xml(开发人员关注)

  • web.xml 定义:应用于的<Servlet 容器默认配置>。

包含着:Servlet、Filter、Session、MIME、Welcome 等等设置。

  • web.xml 特点:不能动态重载,一旦变化,必须手动重启。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐