深入解析:Tomcat

Tomcat

一、Tomcat 服务器:核心解析

Tomcat 全称 Apache Tomcat,是由 Apache 软件基金会开发的开源 Java Web 服务器,核心定位是 Servlet/JSP 容器,是 Java Web 开发与轻量级部署的首选工具

1. 核心定位

  • 本质:轻量级 Java Web 应用服务器,同时也是 Servlet 容器(Servlet 是 Java 处理 Web 请求的核心组件)和 JSP 引擎(JSP 最终会编译为 Servlet 执行)
  • 角色:作为 “中间件”,连接客户端(浏览器)与 Java 后端程序,负责接收 HTTP 请求、调用对应的 Servlet/JSP 处理逻辑,最终将响应结果返回给客户端

2. 关键特性

  • 开源免费:无商业授权成本,社区活跃,问题排查资源丰富
  • 轻量级:安装包体积小(通常几十 MB)、配置简单、启动速度快,对服务器硬件资源要求低
  • 兼容性:严格遵循 Java EE(现 Jakarta EE)规范,支持主流的 Servlet 版本(如 Servlet 4.0/5.0)和 JSP 版本,适配绝大多数 Java Web 框架(Spring、Spring Boot 等)
  • 独立运行:虽早期是 Apache HTTP Server 的扩展,但目前可完全独立运行(自带 HTTP 服务功能),无需依赖 Apache 服务器即可处理 Web 请求

3. 运行依赖

Tomcat 本身由 Java 开发,因此运行必须依赖 JDK(Java Development Kit)——JDK 提供了 Java 程序运行所需的虚拟机(JVM)和核心类库

注意:仅安装 JRE(Java Runtime Environment)不足以支持 Tomcat 运行,因为 Tomcat 启动过程中需要 JDK 的编译工具(如 javac)处理 JSP 编译

4. 与 Apache HTTP Server 的关系

很多初学者会混淆两者,核心区别与联系如下:

维度Apache HTTP ServerTomcat
语言基础C 语言开发Java 语言开发
核心功能处理静态资源(HTML、CSS、图片等)处理动态资源(Servlet、JSP、Java 逻辑)
依赖关系可独立运行,不依赖 Tomcat可独立运行,也可与 Apache 配合使用
配合场景当需要高效处理静态资源时,可让 Apache 接收所有请求,再将动态请求(如 .jsp/servlet/*)转发给 Tomcat 处理,提升整体性能

二、Java Web 中间件:分类与对比

“中间件” 是连接客户端与后端业务系统的桥梁,负责处理通信、负载均衡、事务管理等通用能力,降低开发复杂度。你提到的 Tomcat、JBoss 等均属于 Java Web 中间件,核心用于运行 Java Web 应用,按量级和功能可分为 “轻量级” 和 “企业级” 两类

1. 中间件核心分类对比

名称类型开发者 / 厂商核心特点适用场景
Tomcat轻量级Apache 软件基金会开源免费、轻量简单、专注 Servlet/JSP 容器,功能精简个人开发、中小型项目、开发调试、并发量较低的场景
Jetty轻量级Eclipse 基金会比 Tomcat 更轻量、启动更快、可嵌入式(如嵌入 Spring Boot 内置服务器)示例项目、嵌入式场景、轻量微服务
JBoss(WildFly)企业级Red Hat开源免费、支持完整 Java EE 规范(如 EJB、JMS),功能强大且可扩展中大型企业项目、需要分布式 / 事务支持的场景
WebLogic企业级(商业)Oracle闭源商业软件、支持全套 Java EE 规范、性能强、提供完善的监控 / 运维 / 集群能力大型商业项目、金融 / 电信等核心系统
WebSphere企业级(商业)IBM闭源商业软件、稳定性极强、适配 IBM 生态,支持高并发 / 高可用大型企业级应用、对稳定性要求极高的核心系统

2. 选型建议

  1. 个人学习 / 小型项目:优先选 Tomcat,配置简单、资料丰富,适配 90% 以上的轻量场景
  2. 微服务 / 嵌入式场景:选 Jetty 或 Spring Boot 内置的 Tomcat(默认),启动快、资源占用少
  3. 中大型开源项目:选 JBoss(WildFly),无需商业授权,同时满足分布式、事务等企业级需求
  4. 大型商业 / 核心系统:选 WebLogicWebSphere,虽需付费,但提供企业级技术支持、稳定性和安全性更有保障

案例:

部署tomcat:

关闭防火墙和selinux 略

配置本地yum仓库:

[root@server ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
sy.repo
[root@server yum.repos.d]# cat sy.repo
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@server ~]# yum -y install java-11-openjdk

上传压缩包:

[root@server ~]# rz -E
rz waiting to receive.

解压tomcat到/usr/local/目录下:

[root@server ~]# tar -xzvf apache-tomcat-10.0.23.tar.gz -C /usr/local/
[root@server ~]# cd /usr/local/
[root@server local]# ln -s apache-tomcat-10.0.23/ tomcat
[root@server local]# ll
total 0
drwxr-xr-x  9 root root 220 Sep 24 16:26 apache-tomcat-10.0.23
drwxr-xr-x. 2 root root   6 Apr 11  2018 bin
drwxr-xr-x. 2 root root   6 Apr 11  2018 etc
drwxr-xr-x. 2 root root   6 Apr 11  2018 games
drwxr-xr-x  5 root root  42 Sep 23 20:28 haproxy
drwxr-xr-x. 2 root root   6 Apr 11  2018 include
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root   6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root   6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root  49 Jul 23 11:29 share
drwxr-xr-x. 2 root root   6 Apr 11  2018 src
lrwxrwxrwx  1 root root  22 Sep 24 16:27 tomcat -> apache-tomcat-10.0.23/

自定义一个Hello World的 java的测试网页:

[root@server local]# mkdir /usr/local/tomcat/webapps/test
[root@server local]# cd /usr/local/tomcat/webapps/test
[root@server test]# vim index.jsp


        test page


        <%
                out.println("Hello World");
        %>

~

启动tomcat:

[root@server ~]# cd /usr/local/tomcat/
[root@server tomcat]# bin/startup.sh
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.

默认端口为8080

查看到有java和tomcat的进程,说明服务已经启动成功

[root@server tomcat]# ps -ef | grep tomcat
root      11068      1 12 16:42 pts/0    00:00:12 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root      11119  10275  0 16:43 pts/0    00:00:00 grep --color=auto tomcat

测试访问

访问tomcat首页:http://192.168.100.10:8080

在这里插入图片描述

访问hello world测试页:http://192.168.100.10:8080/test/

在这里插入图片描述

访问Host Manager界面:

配置tomcat-users.xml文件,在行上面添加两行,设置角色,登录用户名和密码,角色名称只能是admin-gui 用户名和密码自定义

[root@syf ~]# vim /usr/local/tomcat/conf/tomcat-users.xml



~

配置host-manager/META-INF/context.xml文件,允许192.168.100.0/24网段访问,在allow字段后添加:

[root@syf ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml

  
  
  

~

重启服务,先关服务,再启服务:

[root@syf ~]# /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@syf ~]# /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.

登录网页测试登录Host Manager 输入对应的用户名和密码

用户名为tomcat,密码为123456

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

访问Server Status

编辑tomcat-users.xml:

[root@syf ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
-->




~

编辑manager/META-INF/context.xml,在allow字段添加允许192.168.100.0/24网段访问:

[root@syf ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
-->

  
  
  

~

重启服务,先关服务,再启服务:

[root@syf ~]# /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@syf ~]# /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.

登录网页,访问Server Status,用户名tomcat 密码123456

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

访问Manager App的时候就不需要密码了,因为访问了Server Status界面,所以不用输入密码

在这里插入图片描述

posted on 2025-09-27 15:17  slgkaifa  阅读(25)  评论(0)    收藏  举报

导航