Tomcat 是由 Java 语言开发的免费、开源的 Web 应用服务器,隶属于 Apache 软件基金会的 Jakarta 项目。它是由 Apache、Sun 和其他公司及个人共同开发的。Tomcat 被广泛应用于中小型系统和并发访问用户较少的场景中,尤其适合开发和调试 JSP 程序。
虽然 Tomcat 和 Apache 或 Nginx 这样的 Web 服务器一样,能够处理 HTML 页面,但由于其处理静态 HTML 的能力不及 Apache 或 Nginx,因此 Tomcat 通常作为一个 Servlet 和 JSP 容器,单独运行在后端。
Tomcat 由一系列组件构成,其中核心组件包括:
这些容器共同构成了 Tomcat 的功能结构,使其既能作为 Web 服务器,又能作为 Servlet/JSP 容器。
Tomcat 的核心功能包括两个主要部分:Connector 和 Container。
Connector 负责接收和响应外部请求,是 Tomcat 与外界的交通枢纽。它监听指定的端口,接收外部请求,将请求处理后传递给容器进行业务处理,最后将处理结果返回给外界。
Container 负责处理内部的业务逻辑,内部由 Engine、Host、Context 和 Wrapper 四个子容器组成。它们共同管理和调用 Servlet 相关逻辑,构成了基本的 Web 服务。
在部署 Tomcat 之前,必须先安装好 JDK,这是 Tomcat 运行的必要环境。以下是安装步骤:
下载 JDK 和 Tomcat 安装包:
关闭防火墙并将安装包传到 /opt 目录下:
systemctl stop firewalld systemctl disable firewalld setenforce 0 在 /opt 目录下安装 JDK:
cd /opt rpm -ivh jdk-8u201-linux-x64.rpm java -version  # 验证 JDK 是否安装成功 设置 JDK 环境变量:
vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH  source /etc/profile.d/java.sh java -version  # 再次验证 JDK 安装是否成功 解压并安装 Tomcat:
cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat 启动 Tomcat 服务:
后台启动:
/usr/local/tomcat/bin/startup.sh 前台启动:
/usr/local/tomcat/bin/catalina.sh run 检查 Tomcat 是否成功启动:
netstat -natp | grep 8080 在浏览器中访问 http://192.168.80.100:8080,确认 Tomcat 的默认主页加载成功。
了解 Tomcat 的目录结构对于后续的配置和维护至关重要。
catalina.sh、startup.sh、shutdown.sh。server.xml、context.xml、tomcat-users.xml、web.xml。编写一个简单的 Java 程序 Hello.java:
public class Hello {               public static void main(String[] args){     System.out.println("Hello world!");   } } 编译并运行:
javac Hello.java java Hello 运行成功后,将会打印 “Hello World”。
为了在一台服务器上运行多个项目,通常不会运行多个 Tomcat 实例,而是通过虚拟主机配置来实现。
创建两个虚拟主机对应的项目目录:
mkdir /usr/local/tomcat/webapps/kgc  mkdir /usr/local/tomcat/webapps/benet 创建测试页面:
echo "This is kgc page!" > /usr/local/tomcat/webapps/kgc/index.jsp echo "This is benet page!" > /usr/local/tomcat/webapps/benet/index.jsp 编辑 server.xml 文件,添加虚拟主机配置:
                  在 /etc/hosts 文件中添加域名映射:
echo "192.168.10.23 www.kgc.com www.benet.com" >> /etc/hosts 通过浏览器访问测试:
http://www.kgc.com:8080/,页面显示 “This is kgc page!”。`,页面显示 “This is benet page!”。
Tomcat 的默认配置可能并不适合生产环境,通过不断压测和优化,可以让 Tomcat 高效稳定地运行。
一些常用的优化参数如下:
编辑 catalina.sh 文件,添加或调整 JVM 参数:
-server                     # 启用 JVM 的 server 工作模式 -Xms1024m                   # 设置初始堆内存大小为 1024MB -Xmx1024m                   # 设置最大堆内存大小为 1024MB -XX:NewSize=512m            # 设置新生代初始内存大小 -XX:MaxNewSize=1024M        # 设置新生代最大内存大小 -XX:PermSize=1024m          # 设置永久保存区域的初始内存大小 -XX:MaxPermSize=1024m       # 设置永久保存区域的最大内存大小 -XX:+DisableExplicitGC      # 禁用显式的垃圾回收调用 -Xms、-Xmn、-Xmx)可以缓解此问题。在 /opt 目录下解压 Tomcat,并创建多个实例:
cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mkdir /usr/local/tomcat mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1 cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2 配置 Tomcat 环境变量:
vim /etc/profile.d/tomcat.sh #tomcat1 export CATALINA_HOME1=/usr/local/tomcat/tomcat1 export CATALINA_BASE1=/usr/local/tomcat/tomcat1 export TOMCAT_HOME1=/usr/local/tomcat/tomcat1  #tomcat2 export CATALINA_HOME2=/usr/local/tomcat/tomcat2 export CATALINA_BASE2=/usr/local/tomcat/tomcat2 export TOMCAT_HOME2=/usr/local/tomcat/tomcat2  source /etc/profile.d/tomcat.sh 修改 Tomcat2 中的 server.xml 文件,确保端口号不冲突:
  修改各 Tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加环境变量:
vim /usr/local/tomcat/tomcat1/bin/startup.sh  export CATALINA_BASE=$CATALINA_BASE1 export CATALINA_HOME=$CATALINA_HOME1 export TOMCAT_HOME=$TOMCAT_HOME1  vim /usr/local/tomcat/tomcat1/bin/shutdown.sh export CATALINA_BASE=$CATALINA_BASE1 export CATALINA_HOME=$CATALINA_HOME1 export TOMCAT_HOME=$TOMCAT_HOME1  vim /usr/local/tomcat/tomcat2/bin/startup.sh  export CATALINA_BASE=$CATALINA_BASE2 export CATALINA_HOME=$CATALINA_HOME2 export TOMCAT_HOME=$TOMCAT_HOME2  vim /usr/local/tomcat/tomcat2/bin/shutdown.sh export CATALINA_BASE=$CATALINA_BASE2 export CATALINA_HOME=$CATALINA_HOME2 export TOMCAT_HOME=$TOMCAT_HOME2 启动各 Tomcat 实例:
/usr/local/tomcat/tomcat1/bin/startup.sh  /usr/local/tomcat/tomcat2/bin/startup.sh  通过浏览器访问:
http://192.168.10.80:8080http://192.168.10.80:8081在生产环境中,Tomcat 的性能很大程度上依赖于 JVM 的配置。通过合理的 JVM 参数设置,可以显著提升 Tomcat 的性能和稳定性。
-server                 # JVM 的 server 工作模式 -Xms1024m               # 初始 Heap 大小 -Xmx1024m               # 最大 Heap 大小 -XX:NewSize=512m        # 新生代初始内存大小 -XX:MaxNewSize=1024M    # 新生代最大内存大小 -XX:PermSize=1024m      # 永久代初始内存大小 -XX:MaxPermSize=1024m   # 永久代最大内存大小 -XX:+DisableExplicitGC  # 禁用显式垃圾回收 性。
-server                 # JVM 的 server 工作模式 -Xms1024m               # 初始 Heap 大小 -Xmx1024m               # 最大 Heap 大小 -XX:NewSize=512m        # 新生代初始内存大小 -XX:MaxNewSize=1024M    # 新生代最大内存大小 -XX:PermSize=1024m      # 永久代初始内存大小 -XX:MaxPermSize=1024m   # 永久代最大内存大小 -XX:+DisableExplicitGC  # 禁用显式垃圾回收 Tomcat 作为一种轻量级的 Web 应用服务器,在中小型项目中得到了广泛应用。通过合理的配置和优化,可以使其在生产环境中稳定高效地运行。本文详细介绍了 Tomcat 的核心组件、安装部署、虚拟主机配置以及 JVM 参数优化等内容,希望能为您在实际应用中提供参考。