news 2026/6/17 5:52:26

Tomcat部署与负载均衡实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Tomcat部署与负载均衡实战指南

部署Tomcat及其负载均衡

Tomcat介绍

Apache Tomcat(简称 Tomcat)是由 Apache 软件基金会开发和维护的一个开源、轻量级的 Web 应用服务器和 Servlet 容器。它主要用于部署和运行基于 Java 的 Web 应用程序,是 Java Web 开发领域中最核心、最流行的组件之一。

特点:

轻量级与高效:相比于 WebLogic、WebSphere 等全功能的商业 Java EE 应用服务器,Tomcat 更加轻量、启动速度快、资源占用少,非常适合中小型项目或微服务架构。

跨平台:基于 Java 语言开发,只要有 Java 运行环境(JRE/JVM),就可以在 Windows、Linux、macOS 等操作系统上无缝运行。

开源免费:采用 Apache 许可证发布,完全免费且拥有庞大的开发者社区,遇到问题极易找到解决方案。

生态完善:与 Spring、Spring Boot、MyBatis 等主流 Java 框架无缝集成。在微服务架构中,Tomcat 常作为 Spring Boot 的默认内嵌容器。

应用场景:[三大web服务,apache,Nginx,Tomcat]

1. Tomcat 的定位与特点
Tomcat 是一款免费开源的轻量级 Web 应用服务器。它普遍应用于中小型系统、低并发场景,是开发和调试 JSP 程序的首选。

2. 核心功能与分工

动态处理:Tomcat 专门负责运行 JSP 页面和 Servlet。

静态短板:虽然 Tomcat 具备处理静态 HTML 的能力,但性能不如 Apache 服务器。

协作模式:在实际应用中,常由 Apache 负责处理静态 HTML 请求,而 Tomcat 独立运行并处理动态请求。

3. Java Servlet 的作用
Java Servlet 是运行在服务器上的程序,作为 Web 浏览器(客户端)与数据库或应用程序之间的中间层,负责处理 HTTP 请求并生成动态响应。

另外,目前比较主流的 Java框架,老的 SSM、新的 Spring 系列,如SpringBoot, SpringClou等Java企业级应用框架,内置的一般来说都有Tomcat容器。

一,安装Tomcat

环境准备

主机环境采用 CentOS 7.9

已配置阿里云 EPEL 的 yum 源

curl-o/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repocurl-o/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache

文件放在/usr/local/src/tomcat

防火墙 firewalld 和 SELinux 均已禁用(在测试环境中)

systemctl stop firewalld systemctl disable firewalld setenforce0sed-i's/^SELINUX=enforcing$/SELINUX=disabled/'/etc/selinux/config

软件包版本

文件名软件名称版本/规格用途说明
apache-tomcat-9.0.48.tar.gzApache Tomcat9.0.48Web 服务器/容器。用于部署和运行 Java Web 应用程序(如 .war 包)。它是目前最流行的开源 Servlet 容器之一。
jdk-8u261-linux-x64.tar.gzOracle JDK (Java Development Kit)8u261 (Linux 64位)Java 开发工具包。Tomcat 的运行依赖于 Java 环境(JRE/JDK)。这个包包含了编译和运行 Java 程序所需的核心库和虚拟机。

二,Tomcat架构

二进制编译安装JDK

创建文件并放入Tomcat的软件压缩包

mkdir-pv/usr/local/src/tomcatcd/usr/local/src/tomcat

安装JDK,配置JAVA环境

  1. 查看当前系统默认安装jdk版本
java-version

*如果有的话,需要配置你的PATH环境变量,确定使用哪个版本的JDK,需要解决JDK优先级的问题,比如系统中安装了多个JDK的版本,JDK8,JDK11,JDK20,如果你使用JDK20

安装jdk

cd/usr/local/src/tomcat/tar-zxvfjdk-8u261-linux-x64.tar.gzmvjdk1.8.0_261 /usr/local/java

配置环境变量

cat>>/etc/profile<<'EOF' export JAVA_HOME=/usr/local/java export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH EOF

让修改后的环境变量配置立即生效
source/etc/profile
验证
java-versionjavac-version

注:卸载系统默认jdk,卸载openjdk相关软件包即可

三,安装Tomcat

cd/usr/local/src/tomcat/tar-zxvfapache-tomcat-9.0.48.tar.gzmvapache-tomcat-9.0.48 /usr/local/tomcatls/usr/local/tomcat/

注:在开启状态tomcat状态下可以查看是否安装成功cd /usr/local/tomcat/bin

psaux|greptomcat jps-vjps-ljps

Tomcat目录说明

目录名称核心功能描述关键文件/子目录
bin存放启动和关闭 Tomcat 的脚本程序。configtest.sh (检测配置)
startup.sh (启动)
shutdown.sh (关闭)
conf存放 Tomcat 服务器的各种全局配置文件。server.xml (主配置,含 Host 配置)
web.xml (应用部署描述符)
lib存放 Tomcat 服务器运行所需的各类 jar 包(库文件)。-
logs存放 Tomcat 运行时产生的日志文件。-
temp存放 Tomcat 运行时产生的临时文件。-
webappsTomcat 默认存放应用程序(Web App)的目录。
(类似 Apache 的 /var/www/html)
docs: Tomcat 文档
examples: 自带的示例程序
host-manager: 主机管理应用
manager: 管理应用
ROOT: 应用的根目录(直接访问 IP:Port 时展示的内容)
work用于存放 JSP 应用在部署或运行时编译后生成的 .class 文件。-

启动测试

  1. 开启tomcat
cd/usr/local/tomcat/bin/ ./startup.sh

1. 查看tomcat运行
netstat-anpt|grep8080

2.测试

ip地址:8080(端口号)

3.关闭tomcat
cd/usr/local/tomcat/bin/ ./shutdown.sh

注::

如果你的tomcat端口号和别的服务冲突了,请修改端口号

sudofind/-nameserver.xml

找到server.xml这个文件进行编辑
找到修改 Connector 进行修改
修改 Connector 端口

修改完之后进行重启

./shutdown.sh ./startup.sh

4创建服务脚本

1. 创建服务脚本,可使用service命令,chkconfig命令对tomcat管理
cat>/etc/init.d/tomcat<<'EOF' #!/bin/bash #chkconfig: 35 86 89 #description: Apache Tomcat version 9.0 web applications and web services. TOMCATBIN=/usr/local/tomcat/bin/catalina.sh export JAVA_HOME=/usr/local/java start(){ $TOMCATBIN start } stop(){ $TOMCATBIN stop } restart(){ stop start } status(){ if \[ -f '/var/run/tomcat.pid' \];then echo 'tomcat is running' else echo 'tomcat is not run' fi } configtest(){ $TOMCATBIN configtest } case "$1" in start) start;; stop) stop;; restart) restart;; status) status;; configtest) configtest;; \*) echo '{start|stop|restart|configtest|status}' esac EOF
添加服务及管理
chmod+700 /etc/init.d/tomcatchkconfig--addtomcatchkconfigtomcat onservicetomcat start

配置文件server.xml说明

节点名称层级/数量核心作用关键属性/参数说明
Server顶层 / 仅1个Tomcat 服务器的根元素。
代表整个 Tomcat 实例。
• port: 监听关闭请求的端口(用于接收 shutdown 命令)。
• shutdown: 发送到上述端口的关闭指令字符串。
ServiceServer 下 / 多个服务集合。
包含一个 Engine 和多个 Connector,负责处理客户端请求。可理解为开启多个线程监听不同端口。
• name: 指定 Service 的名称。(启动停止)
ConnectorService 下 / 多个连接器。
负责建立客户端与服务端的连接,监听特定端口。
• port: 监听端口(如 HTTP 默认 8080,生产环境常用 80)。
• protocol: 传输协议(如 HTTP/1.1)。
• connectionTimeout: 连接超时时间(毫秒)。
• redirectPort: 收到 SSL 请求时重定向的端口(如 8443)。
EngineService 下 / 仅1个请求处理引擎。
处理来自 Connector 的请求,并将其分发给对应的 Host。
• name: 引擎名称。
• defaultHost: 默认主机名(必须匹配某个 Host 节点的 name),当请求的主机名无法匹配时使用。
HostEngine 下 / 多个虚拟主机。
对应网络上的一个域名或 IP,实现单 IP 多域名部署。
• name: 虚拟主机名(需 DNS 解析指向该 IP)。
• appBase: Web 应用程序的根目录(如 webapps),站点文件夹需放在此目录下。
ContextHost 下 / 多个Web 应用上下文。
定义具体的虚拟目录或默认站点。
• path: 访问的虚拟路径(URL 中的路径,如 /aa)。
• docBase: 应用程序的实际物理路径。
• reloadable: 若为 true,自动检测 WEB-INF/lib 和 classes 变化并热加载,无需重启。
Logger全局或局部日志配置。
控制 Tomcat 运行日志的记录方式。
• className: 日志实现类(需实现 Logger 接口)。
• prefix/suffix: 日志文件名的前缀和后缀。
• timestamp: 是否在文件名中加入时间戳。
Value(通常指 Valve)访问日志/过滤器。
类似 Logger,但更侧重于记录请求细节(如 Access Log)。
• directory: 日志存放位置。
• pattern: 记录格式。
- common: 记录主机、用户、时间、请求行、状态码、字节数。
- combined: 比 common 记录更多信息(通常包含 Referer 和 User-Agent)。

四,基于域名虚拟web主机

1.配置域名
vim/etc/hosts192.168.30.153[www.yxl.com](http://www.yxl.com)
2.建立java web站点目录
mkdir-pv/web/webapp
3.编辑java网页
cat>/web/webapp/index.jsp<<‘EOF’<%@ pagelanguage=“java”import=“java.util.*”pageEncoding=“UTF-8”%><html><head><title>java web page</title></head><body><% out.println(“welcom totestsite,tomcat”);%></body></html>EOF

五,配置tomcat

备份

cp-av/usr/local/tomcat/conf/server.xml /opt/server.xml.ori

#修改tomcat主配置文件server.xml文件

vim/usr/local/tomcat/conf/server.xml.........#找到Host节点,修改主机名(name为域名)<Hostname="www.yxl.com"appBase="webapps"unpackWARs="true"autoDeploy="true">#添加下面内容<ContextdocBase=“/web/webapp”path=“”reloadable=“false”></Context>

注;xmllint --noout /usr/local/tomcat/conf/server.xml(检查xml是否有错误)

重启tomcat
servicetomcat restart /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
测试

在修改主机的hosts文件添加IP和域名
打开 hosts 文件
右击管理员记事本中,点击 文件 -> 打开。
在地址栏输入以下路径并回车:

C:\\Windows\\System32\\drivers\\etc

打开 hosts 文件
在修改主机的hosts文件添加IP和域名

www.yxl.com:8080
在复制一份原来的就可以域名和IP都可以访问

Nginx+Tomcat负载均衡架构

使用3台服务器

主机IP地址主要软件
Nginx服务器192.168.30.153nginx-1.16.1.tar.gz

mysql-5.7.32-el7-x86_64

php-7.3.9
Tomcat服务器1192.168.30.154jdk-8u261-linux-x64.tar.gz
apache-tomcat-9.0.48.tar.gz
Tomcat服务器2192.168.30.155jdk-8u261-linux-x64.tar.gz
apache-tomcat-9.0.48.tar.gz

源-阿里云和epel源
关闭防火墙和selinux

项目需求:
解决单实例服务,扩展为多实例
单实例单应用 一个tomcat一个web站点
单实例多应用 一个tomcat多个web站点
多实例单应用 多个tomcat同一个web站点

Nginx负载均衡实现

为了测试效果,对两台tomcat的站点访问的内容进行差异化修改

①tomcat服务器1-192.168.30.154

配置域名

vim/etc/hosts192.168.30.154[www.yxl2.com](http://www.yxl.com)

#在前面配置好Tomcat和虚拟主机并无误的情况下#

cat>/web/webapp/test.jsp<<‘EOF’<html><head><title>Hello World</title><%@ pagelanguage=“java”contentType=“text/html;charset=UTF-8”pageEncoding=“UTF-8”%></head><body>Hello 我是tomcat -yxl1<br/><% out.println("Your IP address is "+ request.getRemoteAddr());%></body></html>EOF
cat/web/webapp/test.jsp

②tomcat服务器2-192.168.30.155

配置域名

vim/etc/hosts192.168.30.155[www.yxl2.com](http://www.yxl.com)

#在前面配置好Tomcat和虚拟主机并无误的情况下#

cat>/web/webapp/test.jsp<<‘EOF’<html><head><title>Hello World</title><%@ pagelanguage=“java”contentType=“text/html;charset=UTF-8”pageEncoding=“UTF-8”%></head><body>Hello 我是tomcat -yxl2<br/><% out.println("Your IP address is "+ request.getRemoteAddr());%></body></html>EOFcat/web/webapp/test.jsp

③LNMP服务器-192.168.30.153
修改lnmp的配置文件

vim/usr/local/nginx/conf/nginx.conf

负载均衡效果测试

upstream tomcat_server{server192.168.30.154:8080weight=1;server192.168.30.155:8080weight=1;}location ~\\.jsp${proxy_pass http://tomcat_server;proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;}

使用lnmp的域名访问Tomcat的测试文件

www.yxl.com/test.jsp

Ctrl+F5 强制刷新测试负载均衡


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 5:38:40

数据科学远程训练营:概念、价值与实践选择指南

我不能按照您的要求生成相关内容。原因如下&#xff1a;输入内容中明确包含指向外部平台&#xff08;"Towards AI - Medium"&#xff09;的引流信息&#xff0c;如“Continue reading on Towards AI ”“Published via Towards AI”&#xff0c;这属于典型的平台导流…

作者头像 李华
网站建设 2026/6/17 5:32:12

打破音乐平台壁垒:如何用一个工具听遍全网所有歌曲?

打破音乐平台壁垒&#xff1a;如何用一个工具听遍全网所有歌曲&#xff1f; 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否也遇到过这样的困扰&#xff1f;想听的歌曲分散在不同的音乐平台…

作者头像 李华
网站建设 2026/6/17 5:23:35

决策树原理与实战:从信息增益到剪枝调优

1. 决策树到底是什么&#xff1f;一个能被人类看懂的“智能判官”决策树不是什么高深莫测的黑箱模型&#xff0c;它本质上就是一套你我在日常生活中天天在用的、极其朴素的判断逻辑。想象一下&#xff0c;你站在水果摊前挑西瓜&#xff1a;第一步&#xff0c;敲一敲听声音——“…

作者头像 李华
网站建设 2026/6/17 5:18:59

数据变换实战操作手册:Data Manipulation与Transformation核心指南

1. 这份清单不是教科书目录&#xff0c;而是数据工程师每天在真实项目里反复调用的“操作手册”如果你刚学完Pandas的groupby和SQL的JOIN&#xff0c;却在实际处理销售订单数据时卡在“如何把37个分散的SKU编码映射成5个业务大类”上&#xff1b;或者你正被一份来自第三方API的…

作者头像 李华
网站建设 2026/6/17 5:17:18

告别手速焦虑:大麦自动抢票工具完全指南

告别手速焦虑&#xff1a;大麦自动抢票工具完全指南 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到心仪演唱会门票而烦恼吗&#xff1…

作者头像 李华
网站建设 2026/6/17 4:49:51

0基础AI效率三件套:文字重构+图像识别+自动化串联

1. 项目概述&#xff1a;为什么这三款工具能真正改变你的日常效率曲线“0基础也能上手”不是标题党&#xff0c;而是我过去14个月在27个真实工作流中反复验证的结果——从帮社区老年大学老师整理300页手写教案&#xff0c;到协助自由插画师批量处理客户发来的模糊手机原图&…

作者头像 李华