xyouyuweizhu头像
Tomcat 简介与安装配置完整指南封面图

Tomcat 简介与安装配置完整指南

一、Tomcat 是什么

Apache Tomcat 是由 Apache 软件基金会维护的开源 Servlet 容器,同时也是目前使用最广泛的 Java Web 应用服务器之一。它实现了 Java EE(现 Jakarta EE)规范中的 Servlet、JSP、WebSocket 等核心组件,能够把开发者编写的 Java Web 应用以标准 HTTP 服务的形式对外提供访问。

与 WebLogic、WebSphere 等重量级商业应用服务器相比,Tomcat 体积小、启动快、配置简单,并且完全免费开源,因此成为学习 Java Web 和部署中小型项目的首选容器。

1.1 Tomcat 的核心组成

  • Catalina:Servlet 容器,负责解析 HTTP 请求、管理 Servlet 生命周期并完成请求分发,是 Tomcat 的核心模块。
  • Coyote:HTTP 连接器,负责监听端口、接收网络请求并转换为统一的内部请求对象。
  • Jasper:JSP 引擎,负责把 JSP 页面编译成 Servlet 后交给 Catalina 执行。
  • Cluster 与 Realm:分别提供集群会话复制和安全认证能力。

1.2 Tomcat 的典型应用场景

  • 部署 Spring Boot、Spring MVC 等 Java Web 项目。
  • 作为开发环境中的本地 Web 容器,配合 IDEA、Eclipse 调试。
  • 作为 Nginx 或 Apache HTTP Server 的后端应用服务器,承担动态请求处理。
  • 学习 Servlet、JSP 规范与 HTTP 协议实践。

1.3 版本与 JDK 的对应关系

选择 Tomcat 版本时,必须关注其支持的 Servlet 规范和最低 JDK 版本,否则会出现启动失败或类加载异常。

Tomcat 版本Servlet 规范最低 JDK 版本说明
Tomcat 8.5Servlet 3.1JDK 7兼容性较好,仍被部分老项目使用
Tomcat 9Servlet 4.0JDK 8支持 HTTP/2,javax 命名空间
Tomcat 10Servlet 5.0JDK 8包名迁移为 jakarta.*,与旧项目不兼容
Tomcat 11Servlet 6.1JDK 17面向新版本 Jakarta EE

提示:如果项目仍使用 javax.servlet 包,请选择 Tomcat 9 及以下版本;如果项目已迁移到 jakarta.servlet,则应使用 Tomcat 10 及以上版本。

二、安装前的环境准备

2.1 安装 JDK

Tomcat 本身是 Java 程序,运行前必须先安装 JDK 并正确配置 JAVA_HOME。以 JDK 17 为例,安装完成后配置环境变量:

# Linux / macOS,写入 ~/.bashrc 或 ~/.zshrc
export JAVA_HOME=/usr/local/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
REM Windows 系统环境变量
setx JAVA_HOME "C:\Program Files\Java\jdk-17"
setx PATH "%JAVA_HOME%\bin;%PATH%"

配置完成后执行以下命令验证:

java -version
echo $JAVA_HOME

2.2 下载 Tomcat

前往 Apache Tomcat 官方站点下载对应版本的压缩包。Windows 推荐下载 .zip 版本,Linux 与 macOS 推荐下载 .tar.gz 版本。下载时注意选择与 JDK 版本匹配的 Tomcat 主版本。

三、Tomcat 安装与目录结构

3.1 解压安装

# Linux / macOS
tar -zxvf apache-tomcat-9.0.xx.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-9.0.xx /usr/local/tomcat
REM Windows 直接解压到指定目录,例如 D:\tomcat

3.2 目录结构说明

目录作用
bin启动、停止脚本,如 startup.sh、shutdown.bat
conf配置文件目录,核心为 server.xml、web.xml、context.xml
libTomcat 运行依赖的公共 JAR 包
logs运行日志,排查问题的主要依据
webapps默认的应用部署目录
workJSP 编译后的临时文件,可安全清空
temp临时文件目录

四、启动与验证

4.1 启动 Tomcat

# Linux / macOS
cd /usr/local/tomcat/bin
./startup.sh
REM Windows
cd D:\tomcat\bin
startup.bat

启动成功后,控制台会输出类似 Server startup in [xxxx] milliseconds 的日志。若启动窗口一闪而过,通常是 JAVA_HOME 未正确配置。

4.2 访问默认页面

在浏览器中访问 http://localhost:8080,如果能看到 Tomcat 欢迎页,说明安装成功。点击页面中的 Manager App 还可以进入应用管理界面。

4.3 停止 Tomcat

# Linux / macOS
./shutdown.sh
REM Windows
shutdown.bat

五、核心配置详解

5.1 修改监听端口

默认端口 8080 常被其他程序占用,可在 conf/server.xml 中修改:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

把 port 改为 80 或其他空闲端口后重启即可生效。注意 Linux 下绑定 1024 以下端口需要 root 权限。

5.2 配置应用部署目录

在 conf/server.xml 的 <Host> 节点中,可以通过 appBase 指定应用根目录:

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
</Host>

也可以使用 conf/Catalina/localhost/ 下的独立 XML 文件配置外部目录,避免把应用直接放进 webapps。

5.3 配置虚拟主机

<Host name="www.example.com" appBase="/data/webapps"
      unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="/data/webapps/demo" reloadable="false" />
</Host>

配置完成后需要在 DNS 或本地 hosts 文件中把域名解析到服务器地址。

5.4 配置访问日志

在 <Host> 节点内添加 Valve,即可记录每次请求:

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b" />

5.5 配置管理用户

如需使用 Manager App 部署应用,需要在 conf/tomcat-users.xml 中增加用户:

<role rolename="manager-gui"/>
<user username="admin" password="admin123" roles="manager-gui"/>

安全提示:生产环境务必修改默认密码,并限制 Manager 页面的访问来源 IP。

六、部署第一个 Web 应用

6.1 目录方式部署

在 webapps 下新建目录 hello,并创建 index.jsp:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
    <h1>Hello Tomcat</h1>
    <p>当前时间:<%= new java.util.Date() %></p>
</body>
</html>

访问 http://localhost:8080/hello/ 即可看到页面内容。

6.2 WAR 包部署

把打包好的 demo.war 复制到 webapps 目录,Tomcat 会自动解压并部署,访问路径为 http://localhost:8080/demo/。

七、常见问题排查

  • 端口被占用:使用 netstat -ano | findstr 8080(Windows)或 lsof -i:8080(Linux)定位进程,修改端口或结束占用进程。
  • 启动报 JAVA_HOME 未设置:检查环境变量是否生效,必要时在 bin/setenv.sh 或 setenv.bat 中显式指定。
  • 中文乱码:确认 JSP 页面 pageEncoding、请求编码和 server.xml 中 Connector 的 URIEncoding 保持一致。
  • 应用部署后 404:检查 webapps 下目录名与访问路径是否一致,并查看 logs/catalina.out 中的部署日志。
  • 内存溢出:在 bin/setenv.sh 中调整 JVM 参数,例如 -Xms512m -Xmx1024m。

八、生产环境优化建议

  • 关闭 autoDeploy 与 unpackWARs,改为手动部署,避免运行期意外重载。
  • 删除 webapps 下默认的 docs、examples、manager 等示例应用,减少攻击面。
  • 使用 Nginx 做反向代理与静态资源处理,Tomcat 只负责动态请求。
  • 配置 JVM 堆内存与 GC 参数,并结合监控工具观察线程数与连接数。
  • 开启 HTTPS,在 Connector 中配置 SSLEnabled 与证书路径。

九、总结

Tomcat 作为轻量级 Servlet 容器,安装配置流程并不复杂:准备匹配版本的 JDK、解压安装包、按需修改 server.xml 与 tomcat-users.xml、启动并验证访问即可。真正需要关注的是版本与 JDK 的兼容性、端口与部署目录的规划,以及生产环境下的安全与性能配置。掌握这些要点后,就可以把 Tomcat 稳定地用于日常开发与中小型项目部署。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/xyouyuweizhu/article/details/170295119

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--