Tomcat服务器指南
Tomcat服务器全方位解析与部署指南
一、Tomcat服务器简介
1.1 基本定义与定位
Tomcat服务器是由Apache软件基金会开发的一款免费且开放源代码的Web应用服务器,在Web应用服务体系中属于轻量级应用服务器范畴。它专为运行Java相关Web应用而设计,核心功能是作为Servlet容器,为Servlet(Server Applet)和JSP(Java Server Pages)程序提供运行环境,是Java Web开发领域中开发、调试Servlet和JSP程序的首选工具,被广泛应用于中小型系统以及并发访问用户数量相对较少的场景。
对于初学者而言,可通过与Apache服务器的关联来理解Tomcat的作用。当在一台机器上完成Apache服务器的配置后,Apache服务器能够响应客户端对HTML(标准通用标记语言下的一个重要应用)页面的访问请求。而Tomcat本质上是Apache服务器的扩展组件,但在实际运行过程中,它具有独立运行的特性——启动Tomcat时,它会以一个与Apache服务器完全独立的进程形式在系统中运行,二者互不干扰又可协同工作,共同支撑Web应用的正常运转。
1.2 与相关技术的关联
Tomcat运行的核心依赖是JDK(Java Development Kit,Java开发工具包)。JDK为Java程序提供了运行所需的基础类库、Java虚拟机(JVM)等关键组件,只有在系统中正确安装并配置好JDK环境后,Tomcat才能够正常启动并运行Java Web应用。简单来说,Java语言开发的网页文件(如.jsp格式文件)必须部署在Tomcat这类Servlet容器中才能被正确解析和运行,而Tomcat的正常运作又离不开JDK环境的支持,三者形成了紧密的技术依赖关系。
1.3 中间件选型参考
在实际项目开发和部署过程中,中间件的选择需结合项目规模、开发场景、运行系统环境等因素综合考量,以下是常见中间件的适用场景分析:
中间件名称 | 适用场景 | 特点 |
---|---|---|
Tomcat | 本地开发、中小型项目、个人开发项目 | 开源免费、轻量级、配置简单、易于上手,对系统资源占用较少,能满足中小型应用的并发需求,是Java Web开发入门和中小型项目部署的常用选择 |
Jetty | 示例项目、小型项目、对服务器启动速度和资源占用有较高要求的场景 | 同样是开源的Java Web服务器和Servlet容器,启动速度快、内存占用低,在开发调试阶段或小型应用部署中表现出色,也常被用于嵌入式场景 |
Apache HTTP Server | Linux系统环境下的Web服务部署,主要用于处理静态资源访问请求 | 功能强大、稳定性高、跨平台性好,在处理HTML、CSS、JavaScript等静态资源方面性能优异,常与Tomcat等应用服务器配合使用,实现动静资源分离 |
JBOSS | 中大型项目、企业级应用部署 | 开源的企业级应用服务器,支持多种Java EE规范,功能丰富,提供了分布式事务管理、集群等企业级特性,能够满足中大型项目复杂的业务需求 |
WebLogic | 大型商业项目、对系统稳定性和安全性要求极高的企业级应用 | 由Oracle公司开发的商业级应用服务器,具备强大的集群能力、完善的安全机制、高可用性和可扩展性,适合大型企业的核心业务系统,但需要支付相应的授权费用 |
WebSphere | 大型商业项目、金融、电信等对系统可靠性和性能要求严苛的领域 | IBM公司推出的商业级应用服务器,遵循Java EE规范,在稳定性、安全性、可管理性以及对大型企业级应用的支持方面表现突出,广泛应用于金融、电信等关键行业的核心系统 |
GlassFish | 企业级应用开发与部署,尤其是对Java EE规范支持要求较高的场景 | 开源的企业级应用服务器,由Oracle公司主导开发,完全支持Java EE规范,提供了丰富的开发工具和管理功能,适合需要完整Java EE支持的企业级应用 |
在实际选型时,若项目规模较小、预算有限且以Java Web开发为主,Tomcat通常是优先考虑的选择;若涉及大型商业项目且对系统稳定性、安全性和服务支持有高要求,WebLogic、WebSphere等商业中间件则更符合需求;而在Linux系统环境下,若需侧重处理静态资源,Apache HTTP Server配合Tomcat的组合也是常用方案。
二、Tomcat服务器部署步骤(Linux环境)
2.1 部署前准备:关闭防火墙与SELinux
在Linux系统中,防火墙和SELinux(Security-Enhanced Linux,安全增强型Linux)可能会对Tomcat服务器的网络访问和文件操作产生限制,为确保Tomcat能够正常部署和运行,首先需要关闭防火墙和SELinux。
2.1.1 关闭防火墙
- 临时关闭防火墙(重启系统后失效):
[root@tomcat ~]# systemctl stop firewalld
[root@tomcat ~]# systemctl disable firewalld
[root@tomcat ~]# systemctl status firewalld
2.1.2 关闭SELinux
[root@tomcat ~]# setenforce 0
[root@tomcat ~]# vim /etc/selinux/config
[root@tomcat ~]# reboot
[root@tomcat ~]# getenforce
2.2 安装Java环境(JDK)
Tomcat运行依赖JDK,因此需要先在系统中安装JDK。本部署案例以安装Java 11版本为例,通过yum包管理器进行安装,操作步骤如下:
[root@tomcat ~]# yum -y install java-11-openjdk
- 验证JDK安装结果:
安装完成后,通过以下命令查看Java版本,确认JDK是否安装成功:
[root@tomcat ~]# java -version
若输出类似“openjdk version “11.0.xx” 20xx-xx-xx LTS”的信息,则表示JDK已成功安装。
2.3 解压并配置Tomcat
2.3.1 解压Tomcat压缩包
假设已获取Tomcat 10.0.23版本的压缩包(文件名为apache-tomcat-10.0.23.tar.gz
),并将其放置在root用户的家目录(/root/
)下。执行以下命令将Tomcat压缩包解压到/usr/local/
目录下:
[root@tomcat ~]# tar -xzf apache-tomcat-10.0.23.tar.gz -C /usr/local/
- 命令参数说明:
tar
:Linux系统中用于打包和解压文件的命令。-x
:表示解压操作。-z
:表示处理的是.gz格式的压缩文件。-f
:指定要处理的压缩文件名称,该参数后必须紧跟压缩文件名。-C /usr/local/
:指定解压后的文件存放目录为/usr/local/
。
2.3.2 创建Tomcat软链接
[root@tomcat ~]# cd /usr/local/
[root@tomcat local]# ln -s apache-tomcat-10.0.23/ tomcat
2.4 自定义Hello World测试网页
为了验证Tomcat服务器是否能够正常运行Java Web应用,我们需要创建一个简单的Hello World测试网页(JSP格式),具体步骤如下:
2.4.1 创建测试网页目录
在Tomcat的Web应用部署目录(/usr/local/tomcat/webapps/
)下创建一个名为test
的目录,用于存放测试网页文件:
[root@tomcat local]# mkdir /usr/local/tomcat/webapps/test
2.4.2 创建并编辑JSP测试文件
进入test
目录,使用vim
编辑器创建并编辑index.jsp
文件:
[root@tomcat local]# cd /usr/local/tomcat/webapps/test
[root@tomcat test]# vim index.jsp
在index.jsp
文件中输入以下内容:
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hello World");
%>
</body>
</html>
2.5 启动Tomcat服务器
完成上述配置后,即可启动Tomcat服务器,具体命令如下:
[root@tomcat test]# cd /usr/local/tomcat
[root@tomcat tomcat]# bin/startup.sh
- 命令说明:
- 首先通过
cd /usr/local/tomcat
命令进入Tomcat的主目录。 bin/startup.sh
是Tomcat的启动脚本(.sh
后缀表示该脚本适用于Linux/Unix系统),执行该脚本即可启动Tomcat服务器。
- 首先通过
2.5.1 验证Tomcat启动状态
Tomcat启动后,可通过以下命令查看系统中是否存在Tomcat相关进程,以确认服务器是否启动成功:
[root@tomcat tomcat]# ps -ef | grep tomcat
- 命令说明:
ps -ef
用于查看系统中所有正在运行的进程信息,-e
表示显示所有进程,-f
表示以全格式显示进程信息(包括进程ID、父进程ID、用户、启动时间、命令等)。
此外,Tomcat服务器默认使用8080端口提供Web服务,也可通过查看8080端口的监听状态来验证Tomcat是否启动成功,命令如下:
[root@tomcat tomcat]# netstat -tuln | grep 8080[root@ycy2 tomcat]# netstat -tuln | grep 8080
tcp6 0 0 :::8080 :::* LISTEN
或
[root@tomcat tomcat]# ss -tuln | grep 8080
2.6 测试访问Tomcat服务
访问tomcat首页:http://192.168.100.10:8080
访问hello world测试页:http://192.168.100.10:8080/test/
三、Tomcat拓展配置:访问管理界面
Tomcat提供了两个重要的管理界面:Host Manager(主机管理界面)和Server Status(服务器状态界面),通过这些界面可以方便地对Tomcat服务器进行管理和监控。默认情况下,这些管理界面可能无法直接访问,需要进行相关配置才能正常使用。
3.1 配置访问Host Manager界面
3.1.1 配置用户角色与登录信息
Host Manager界面需要用户登录才能访问,因此首先需要在Tomcat的用户配置文件tomcat-users.xml
中设置具有访问权限的用户角色和登录用户名、密码。具体操作如下:
- 编辑
tomcat-users.xml
文件:
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
- 在文件末尾的
</tomcat-users>
标签上方添加以下内容:
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="admin-gui"/>
- 配置说明:
<role rolename="admin-gui"/>
:定义一个名为“admin-gui”的角色,该角色是Tomcat预定义的用于访问Host Manager界面的角色,只有拥有该角色的用户才能访问Host Manager界面。<user username="tomcat" password="123456" roles="admin-gui"/>
:创建一个用户,用户名为“tomcat”,密码为“123456”(实际应用中建议设置复杂度更高的密码以保证安全性),并将该用户分配到“admin-gui”角色,使其拥有访问Host Manager界面的权限。
- 保存并退出文件:在
vim
编辑器中按下Esc
键,输入:wq
并回车。
3.1.2 配置Host Manager访问权限(允许指定网段访问)
默认情况下,Tomcat的Host Manager界面可能只允许本地(服务器自身)访问,为了能够从客户端(如同一局域网内的其他机器)访问该界面,需要修改Host Manager的上下文配置文件,允许指定网段的IP地址访问。具体步骤如下:
- 编辑Host Manager的上下文配置文件
context.xml
:
[root@tomcat ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
- 在文件中的
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="..." />
标签的allow
属性值中添加允许访问的网段。本案例中允许192.168.100.0/24
网段(即IP地址范围为192.168.100.1
到192.168.100.254
)的客户端访问,修改后的Valve
标签内容如下:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="192\.168\.100\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
- 配置说明:
allow
属性用于指定允许访问的IP地址或网段,多个地址或网段之间使用“|”分隔。192\.168\.100\.\d+
:表示允许192.168.100.0/24
网段的IP地址访问,其中“.”是转义字符(因为“.”在正则表达式中有特殊含义,需要转义),“\d+”表示匹配一个或多个数字。127\.\d+\.\d+\.\d+
:允许本地回环地址(如127.0.0.1
)访问,即允许在服务器本地访问。::1
和0:0:0:0:0:0:0:1
:是IPv6格式的本地回环地址,用于支持IPv6环境下的本地访问。
- 保存并退出文件。
3.1.3 重启Tomcat服务使配置生效
修改配置文件后,需要重启Tomcat服务器才能使配置生效。首先停止Tomcat服务,然后再启动服务,命令如下:
[root@tomcat ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@tomcat ~]# /usr/local/tomcat/bin/catalina.sh start
-
命令说明:
catalina.sh
是Tomcat的核心脚本文件,stop
参数用于停止Tomcat服务,start
参数用于启动Tomcat服务。相比startup.sh
和shutdown.sh
脚本,catalina.sh
脚本的功能更全面,支持更多的操作参数。
3.2 配置访问Server Status界面
3.2.1 配置用户角色(添加manager-gui角色)
访问Server Status界面需要用户拥有“manager-gui”角色,因此需要在tomcat-users.xml
文件中为已有的用户添加该角色,或者创建新的拥有该角色的用户。本案例中在之前创建的“tomcat”用户基础上添加“manager-gui”角色,具体操作如下:
- 编辑
tomcat-users.xml
文件:
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
- 将之前添加的用户配置行修改为:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/>
- 配置说明:
- 新增
<role rolename="manager-gui"/>
标签,定义用于访问Server Status界面和Manager App界面的“manager-gui”角色。 - 在
<user>
标签的roles
属性中添加“manager-gui”,使“tomcat”用户同时拥有“admin-gui”和“manager-gui”两个角色,既可以访问Host Manager界面,也可以访问Server Status界面和Manager App界面。
- 新增
- 保存并退出文件。
3.2.2 配置Server Status访问权限(允许指定网段访问)
与Host Manager界面类似,默认情况下Server Status界面可能也只允许本地访问,需要修改其上下文配置文件,允许指定网段访问。具体步骤如下:
- 编辑Manager应用的上下文配置文件
context.xml
:
[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
- 在文件中的
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="..." />
标签的allow
属性值中添加允许访问的网段(本案例仍允许192.168.100.0/24
网段访问),修改后的Valve
标签内容如下:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="192\.168\.100\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
- 配置说明与Host Manager界面的
context.xml
文件配置相同,此处不再赘述。
- 保存并退出文件。
3.2.3 重启Tomcat服务
修改配置文件后,重启Tomcat服务器使配置生效:
[root@tomcat ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@tomcat ~]# /usr/local/tomcat/bin/catalina.sh start
3.2.4 测试访问Server Status界面
拓展:
搭建AI平台
#先搭建好http
#上传java工具包并解压
[root@rs2 ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Music Public Videos
Desktop Downloads jdk-17.0.15_linux-x64_bin.tar.gz Pictures Templates
[root@rs2 ~]# tar -xzvf jdk-17.0.15_linux-x64_bin.tar.gz -C /usr/local/
tar -xzvf jdk-17.0.15_linux-x64_bin.tar.gz -C /usr/local/[root@rs2 local]# cd jdk-17.0.15
[root@rs2 jdk-17.0.15]# ls
bin conf include jmods legal lib LICENSE man README release
#配置环境变量(最后一行写入)
[root@rs2 jdk-17.0.15]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk-17.0.15
export PATH=/usr/local/jdk-17.0.15/bin:$PATH[root@rs2 jdk-17.0.15]# source /etc/profile#上传AI工具包
[root@rs2 ~]# ls
anaconda-ks.cfg Downloads Music Spring_AI_Demo-0.0.1-SNAPSHOT.jar
Desktop initial-setup-ks.cfg Pictures Templates
Documents jdk-17.0.15_linux-x64_bin.tar.gz Public Videos
#启动
[root@rs2 ~]# nohup java -jar Spring_AI_Demo-0.0.1-SNAPSHOT.jar &
[1] 60974
[root@rs2 ~]# nohup: ignoring input and appending output to ‘nohup.out’
#观察端口号8080起来了说明搭建好了
[root@rs2 ~]# ss -anit