tomcat的配置与使用

tomcat的配置与使用

tomcat manager配置面板

Tomcat 的 Manager 配置面板是 Apache Tomcat 内置的一个 Web 管理界面,用于在不重启 Tomcat 的情况下,远程部署、启动、停止、重新加载和卸载 Web 应用程序(WAR 包)。一般很少使用都是通过直接到到服务器中修改相关配置,这个作为了解即可。

访问地址:http://<服务器IP>:8080/manager/html,首次访问会提示 403 Access Denied,因为默认未配置访问权限。

在这里插入图片描述

配置tomcat manager

  • 添加管理用户
    在tomcat安装目录的/usr/local/tomcat/conf/tomcat-users.xml 添加配置
1
2
3
4
5
[root@centos-manager conf]# vi /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="admin-gui,manager-gui,manager-script"/>

tomcat配置文件中的注释格式<!-- 注释内容 -->,添加配置的时候需要注意避免添加到注释中。
在这里插入图片描述

  • 限制访问 IP
    编辑tomcat安装目录下的webapps/manager/META-INF/context.xmlwebapps/host-manager/META-INF/context.xml
    将配置文件中的allow这一行的value修改成允许访问的IP地址或者是网段
    在这里插入图片描述
  • 重启tomcat服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@centos-manager webapps]# /usr/local/tomcat/bin/catalina.sh  stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager webapps]#
[root@centos-manager webapps]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

tomcat 配置文件

tomcat 目录结构

目录 作用 关键文件/说明
bin/ 启动、停止、管理脚本 - startup.sh / shutdown.sh(Linux)
- catalina.sh(核心脚本)
- version.sh(查看版本)
conf/ 全局配置文件 - server.xml:主配置(端口、Host、Connector)
- web.xml:全局 Web 应用默认配置
- context.xml:全局 Context 配置
lib/ 共享类库 所有 Web 应用和 Tomcat 自身都可访问的 JAR 包
(如数据库驱动、公共工具库)
logs/ 日志输出目录 - catalina.out:标准输出/错误日志(Linux)
- localhost_access_log.*.txt:访问日志
- catalina.YYYY-MM-DD.log:内部日志
temp/ 临时工作目录 JVM 临时文件、解压 WAR 时的中间文件
webapps/ Web 应用部署目录 - 放入 .war 文件或目录,Tomcat 会自动部署
- ROOT/:默认应用(访问 http://ip:8080/ 时显示)
work/ JSP 编译缓存 JSP → Java → Class 的中间文件
(删除后重启会重新生成)

tomcat 基于多端口的项目部署

  • 修改配置
    如果需要再同一个tomcat的实例中部署多个项目的话,因为端口不能冲突,所以就涉及到需要修改server.xml 的配置文件,在配置文件中添加多个service,配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@centos-manager conf]# vi /usr/local/tomcat/conf/server.xml
<Service name="Catalina1">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
<Engine name="Catalina1" defaultHost="localhost">
<Host name="localhost" appBase="webapps1">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="webapps1" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>

说明:
<Service name="Catalina1"> 创建一个新的Service,name可自定义
Connector 中的port,指定新Service中需要使用的端口号,也就是新项目部署之后的访问端口号
Engine 的name,新Service的名称。
<Host name="localhost" appBase="webapps1"> 该标签中的name可以不用修改,需要注意的是appBase,这个参数是指定新的项目包所部署的路径。要真实存在服务器中的。
在这里插入图片描述

  • 创建新项目的包存放路径
    在上面的配置中,新的项目存在路径是webapps1,该目录默认是没有的,需要再tomcat的安装目录下创建。
1
2
3
4
5
6
[root@centos-manager tomcat]# cd /usr/local/tomcat/
[root@centos-manager tomcat]# mkdir webapps1
# 因为tomcat默认访问的服务路径是ROOT。所以我们需要再webapps1中也创建一个ROOT目录
[root@centos-manager tomcat]# mkdir -p webapps1/ROOT
# 在ROOT目录中创建一个index.html的文件,并且写入一个标题
[root@centos-manager tomcat]# echo "<h1>this is tomcat2<h1>" >> webapp1/ROOT/index.html
  • 重启tomcat服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@centos-manager tomcat]# /usr/local/tomcat/bin/catalina.sh  stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager tomcat]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
  • 测试
    使用http://IP地址:8080访问到的还是tomcat的默认网页
    在这里插入图片描述
    使用http://IP地址:8081则会访问到我们新添加的网页
    在这里插入图片描述

tomcat 的工作模式

BI0:阻塞式I/0操作,表示Tomcat使用的是传统的Java I/0操作(即java.io包及其子包)。默认的模式,性能最差,没有经过任何优化处理和支持。Tomcat 8.5+ 彻底废弃

NI0:Java SE1.4及后续版本提供的一种新的I/0操作方式(即java.nio包及其子包)。Javanio是一个基于缓冲区、并能提供非阻塞I/0操作的Java API。拥有比传统I/0操作(bio)更好的并发运行性能。

APR : Apache Portable Runtime,Apache可移植运行时库,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。Tomct apr也是在Tomcat.上运行高并发应用的首选模式。要让Tomcat以apr模式来运行,必须安装apr和native。这样tomcat才可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。

Tomcat 9/10 默认使用 NIO,无需显式配置 protocol

tomcat 设置apr模式

tomcat设置apr模式的话,需要安装apr相关的包和tomcat-native由于需要下载的包有点多,所以可以给apr创建一个归档目录

1
[root@centos-manager ~]# mkdir apr
  • 下载相关的包
    apr 下载路径:https://apr.apache.org/download.cgi,Linux服务器的话下载tar.gz的包就可行,apr、util 和iconv 都需要各下载一个。
    在这里插入图片描述
    这里还需要再下载一个openssl的安装包,因为Tomcat Native是依赖于openssl的如果openssl的版本号比较低的话,Tomcat Native就安装不上了 https://openssl-library.org/source/
    在这里插入图片描述
    下载最新的长期支持版即可

  • 安装apr
    apr的三个包再安装的时候,是有依赖顺序的,安装顺序为 apr —–> apr-iconv —–> apr-util
    先将apr 解压到当前目录

1
2
3
[root@centos-manager apr]# tar -zxvf apr-1.7.6.tar.gz
# 在安装arp的时候也会有其他额外的依赖包,可以使用yum进行安装
[root@centos-manager apr]# yum -y install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64 libtool.x86_64 expat-devel
1
2
[root@centos-manager apr]# cd apr-1.7.6/
[root@centos-manager apr-1.7.6]# ./configure --prefix=/usr/local/apr

在这里插入图片描述编译完成之后,如果没有错误的话,就可以接着安装了

1
[root@centos-manager apr-1.7.6]# make && make install
  • 安装 apr-iconv
1
2
3
4
5
[root@centos-manager apr]# tar  -axvf apr-iconv-1.2.2.tar.gz
root@centos-manager apr]# cd apr-iconv-1.2.2/
# --with-apr 指定apr的主程序路径
[root@centos-manager apr-iconv-1.2.2]# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
[root@centos-manager apr-iconv-1.2.2]# make && make install
  • 安装apr-util
1
2
3
4
[root@centos-manager apr]# tar  -zxvf apr-util-1.6.3.tar.gz
[root@centos-manager apr]# cd apr-util-1.6.3
[root@centos-manager apr-util-1.6.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv
[root@centos-manager apr-util-1.6.3]# make && make install
  • 安装openssl
1
2
3
4
5
[root@centos-manager apr]# tar  -zxvf  openssl-1.1.1t.tar.gz
[root@centos-manager apr]# cd openssl-1.1.1t
[root@centos-manager openssl-1.1.1t]# ./config --prefix=/usr/local/openssl
[root@centos-manager openssl-1.1.1t]# make
[root@centos-manager openssl-1.1.1t]# make install
  • 安装tomcat-native
    tomcat-native是系统自带的,所有不用额外下载,在tomcat的安装目录中就有
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@centos-manager apr-util-1.6.3]# tar -zxvf /usr/local/tomcat/bin/tomcat-native.tar.gz  -C /usr/local/src/
[root@centos-manager src]# cd /usr/local/src/tomcat-native-1.3.5-src/native/
# 指定jdk安装路径和openssl安装路径
[root@centos-manager native]# ./configure --with-java-home=/usr/lib/jvm/jdk --with-ssl=/usr/local/openssl
[root@centos-manager native]# make
[root@centos-manager native]# make install
# 让动态链接库为系统共享 需运行动态链接库的管理命令ldconfig
[root@centos-manager native]# ldconfig
#将 /usr/local/apr/lib/ 添加到动态链接器的运行时库搜索路径中。
[root@centos-manager native]# vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib/
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
[root@centos-manager native]# source /etc/profile
  • 编辑配置文件
    备份catalina.sh 文件
1
[root@centos-manager bin]# cp /usr/local/tomcat/bin/catalina.sh  /usr/local/tomcat/bin/catalina.sh.bak

编辑catalina.sh的配置文件,在配置文件中找到“JAVA_OPTS”变量,在其中添加”-Djava.library.path=/usr/local/apr/lib/“

1
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask` -Djava.library.path=/usr/local/apr/lib/"
  • 重启tomcat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@centos-manager bin]# ./catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager bin]# ./catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

检查服务是否正常运行,并检查端口是否监听

1
2
3
4
5
6
root@centos-manager bin]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 100391 root 58u IPv6 833328 0t0 TCP *:webcache (LISTEN)
[root@centos-manager bin]# lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 100391 root 61u IPv6 833331 0t0 TCP *:tproxy (LISTEN)

tomcat 切换apr模式

切换apr模式的话,需要修改server.xml的配置文件,建议在修改之前做一个备份

1
[root@centos-manager bin]# cp /usr/local/tomcat/conf/server.xml  /usr/local/tomcat/conf/server.xml.bak
  • 修改配置文件
    在上面我们自定义了一个端口号为8081的Service,现在就修改8081的配置,让其使用apr模式启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Service name="Catalina1">
<Connector port="8081" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
<Engine name="Catalina1" defaultHost="localhost">
<Host name="localhost" appBase="webapps1">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="webapps1" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>

在这里插入图片描述

  • 重启tomcat并验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@centos-manager conf]# ../bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager conf]# ../bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

在这里插入图片描述
通过观察catalina.out 日志可以发现,当前8081端口已经切换成了apr的工作模式了,而8080因为没有修改所以使用的还是默认的nio的模式。

  • 添加优化参数
    仅修改 protocol 也能启用 APR,但不添加优化参数会浪费 APR 的性能优势。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Service name="Catalina1">
<Connector
port="8081"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="500"
maxConnections="10000"
useSendfile="true"
socketBuffer="65536"
tcpNoDelay="true"
compression="on"
redirectPort="8443" />
<Engine name="Catalina1" defaultHost="localhost">
<Host name="localhost" appBase="webapps1">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="webapps1" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
修改项 新配置 作用
protocol org.apache.coyote.http11.Http11AprProtocol 核心修改,启用 APR 模式
maxThreads 500 增加工作线程数,应对高并发
maxConnections 10000 最大连接数(APR 支持更高)
useSendfile true 启用零拷贝,静态文件性能提升 30%+
socketBuffer 65536 增大 Socket 缓冲区,提升吞吐
tcpNoDelay true 禁用 Nagle 算法,降低延迟
compression on 启用 GZIP 压缩,减少带宽
  • 重启查看服务是否正常

设置tomcat 运行时内存

tomcat是运行在jvm(java虚拟机)之上的,修改tomcat的运行时内存其实就是修改运行这个tomcat的jvm的-Xms-Xmx

参数 全称 含义 示例 说明
-Xms eXtended Minimum Size JVM 初始堆内存大小 -Xms1024m JVM 启动时立即分配的堆内存
-Xmx eXtended Maximum Sixe JVM 最大堆内存大小 -Xmx4096m JVM 运行时允许扩展到的最大堆内存

JVM的Xmx默认最大可达物理内存的 1/4(64 位)甚至更高,如果不设置的话可能会导致多个 Java 进程同时运行时,总内存超限 → 触发 Linux OOM Killer 杀死进程;无上限的内存增长,单个应用吃光内存,导致数据库/缓存等其他服务崩溃

如何设置

  • 修改启动脚本
    在tomcat的启动脚本catalina.sh,找到JAVA_OPTS的变量,在后面添加需要设置的参数
    -Xms1024m -Xmx2048m
    在这里插入图片描述
    我这里设置的```-Xms是1G,Xmx``是2G。
  • 重启tomcat
    设置完之后就可以重启tomcat。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@centos-manager bin]# ./catalina.sh  restart
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager bin]# ./catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
  • 验证
    使用ps -ef 的命令查看tomcat的进程信息
    在这里插入图片描述
    这里可以看到tomcat运行时的最小堆内存和最大堆内存已经设置生效了。

tomcat的配置与使用
https://www.situgou.top/2026/01/28/tomcat的配置与使用/
作者
xqj_Blog
发布于
2026年1月28日
许可协议