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:8080
http://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 参数优化等内容,希望能为您在实际应用中提供参考。