Apache Tomcat 服务器运行与配置完全指南
前言
Apache Tomcat 是一个开源的 Java Servlet 容器,实现了 Java Servlet 和 JavaServer Pages (JSP) 规范。作为轻量级的应用服务器,Tomcat 被广泛用于开发和部署 Java Web 应用程序。本文将全面介绍如何正确运行和配置 Apache Tomcat 服务器。
环境准备
Java 运行环境要求
Tomcat 需要 Java 标准版运行时环境(JRE)或开发工具包(JDK)才能运行。具体要求如下:
- 最低版本:Tomcat @VERSION_MAJOR_MINOR@ 需要 JRE @MIN_JAVA_VERSION@ 或更高版本
- 推荐版本:建议使用与 Tomcat 版本兼容的最新稳定版 JDK
- 选择建议:
- 开发环境:推荐安装完整 JDK,便于调试和开发
- 生产环境:可使用 JRE 以减少资源占用
Tomcat 安装步骤
1. 下载并安装 Java
- 从官方渠道获取 Java SE @MIN_JAVA_VERSION@ 或更高版本
- 按照官方文档完成安装
- 验证安装:在命令行执行
java -version
确认版本符合要求
2. 下载并安装 Tomcat
- 从 Apache Tomcat 官方网站获取二进制发行版
- 解压下载的压缩包到目标目录(通常命名为"apache-tomcat-[版本号]")
- 记下解压目录的完整路径,后续将作为
CATALINA_HOME
替代方案:高级用户可以从源码构建 Tomcat,具体方法参考 BUILDING.txt 文件
环境变量配置
Tomcat 通过环境变量控制其运行行为,主要变量如下:
核心变量
-
CATALINA_HOME(必需):
- 指向 Tomcat 二进制发行版的根目录
- 示例(Linux):
export CATALINA_HOME=/opt/apache-tomcat-9.0
-
CATALINA_BASE(可选):
- 指定 Tomcat 活动配置的根目录
- 默认等于 CATALINA_HOME
- 多实例部署时特别有用
Java 相关变量
-
JRE_HOME:
- 指定 JRE 安装路径
- 示例:
export JRE_HOME=/usr/lib/jvm/jre-11
-
JAVA_HOME:
- 指定 JDK 安装路径(提供更多启动选项)
- 示例:
export JAVA_HOME=/usr/lib/jvm/jdk-11
优先级:当同时设置 JRE_HOME 和 JAVA_HOME 时,JRE_HOME 优先
其他重要变量
-
CATALINA_OPTS:
- 指定启动 Tomcat 的 JVM 参数
- 示例:
export CATALINA_OPTS="-Xms512m -Xmx1024m"
-
CATALINA_PID(仅限 Linux):
- 指定存储 Tomcat 进程 ID 的文件路径
- 启用更可靠的启动/停止控制
推荐配置方式:setenv 脚本
最佳实践是通过 setenv
脚本集中管理环境变量:
-
创建脚本文件:
- Windows:
%CATALINA_BASE%\bin\setenv.bat
- Linux:
$CATALINA_BASE/bin/setenv.sh
- Windows:
-
示例内容(Linux):
#!/bin/sh
JAVA_HOME=/usr/lib/jvm/jdk-11
CATALINA_PID="/var/run/tomcat.pid"
CATALINA_OPTS="-Xms512m -Xmx1024m -server"
注意:CATALINA_HOME 和 CATALINA_BASE 不能在 setenv 中设置
启动与停止 Tomcat
启动命令
-
Windows:
%CATALINA_HOME%\bin\startup.bat 或 %CATALINA_HOME%\bin\catalina.bat start
-
Linux:
$CATALINA_HOME/bin/startup.sh 或 $CATALINA_HOME/bin/catalina.sh start
启动成功后,默认访问地址:http://localhost:8080/
停止命令
-
Windows:
%CATALINA_HOME%\bin\shutdown.bat 或 %CATALINA_HOME%\bin\catalina.bat stop
-
Linux:
$CATALINA_HOME/bin/shutdown.sh 或 $CATALINA_HOME/bin/catalina.sh stop
高级配置:多实例部署
Tomcat 支持单二进制多配置的部署模式,适合多用户共享场景:
目录结构划分
-
CATALINA_HOME(共享):
- /bin:启动脚本
- /lib:共享类库
-
CATALINA_BASE(实例独有):
- /conf:配置文件(如 server.xml)
- /logs:日志文件
- /webapps:部署的 Web 应用
- /work:临时工作目录
- /temp:JVM 临时文件
配置示例
- 创建实例目录结构:
mkdir -p /opt/tomcat-instances/instance1/{conf,logs,webapps,work,temp}
- 复制必要文件:
cp $CATALINA_HOME/conf/* /opt/tomcat-instances/instance1/conf/
- 设置环境变量:
export CATALINA_BASE=/opt/tomcat-instances/instance1
export CATALINA_HOME=/opt/apache-tomcat-9.0
常见问题排查
1. 端口冲突
症状:Tomcat 启动失败,报端口占用错误
解决方案:
- 修改
$CATALINA_HOME/conf/server.xml
- 查找并更改 8080 端口(建议使用大于1024的端口)
- 重启 Tomcat
2. 本地主机访问问题
症状:无法通过 localhost 访问
可能原因:
- 浏览器代理设置阻止访问本地
- 系统 hosts 文件配置异常
解决方案:
- 检查浏览器代理设置,确保 localhost 不经过代理
- 验证系统 hosts 文件包含
127.0.0.1 localhost
条目
可选组件
1. Apache Tomcat Native 库
功能:
- 提供基于 OpenSSL 的高性能 TLS 实现
- 依赖 APR (Apache Portable Runtime) 库
部署建议:
- 生产环境考虑使用以提升性能
- 开发环境通常不需要
禁用方法:
从 conf/server.xml
中移除 AprLifecycleListener
2. Apache Commons Daemon
功能:
- 将 Tomcat 安装为系统服务
- Windows:procrun
- Linux:jsvc
使用场景:
- 生产环境需要 Tomcat 随系统启动
- 需要更可靠的服务管理
最佳实践建议
-
内存配置:
- 通过 CATALINA_OPTS 设置 JVM 内存参数
- 示例:
-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m
-
日志管理:
- 定期清理 logs 目录
- 考虑使用 logrotate 等工具管理日志文件
-
安全加固:
- 删除默认示例应用
- 修改默认管理员密码
- 限制管理界面访问IP
-
性能调优:
- 根据应用特点调整连接器配置
- 考虑启用压缩
- 合理设置线程池参数
通过遵循本指南,您应该能够成功部署和运行 Apache Tomcat 服务器。对于更高级的配置和优化,建议参考官方文档中的详细配置指南。