2.1 环境准备与安装启动全流程


文档摘要

2.1 环境准备与安装启动全流程 本节摘要:本节完成漫游前的装备检查——核对 JDK 与 Tomcat 版本的匹配关系,解压安装并区分 CATALINAHOME 与 CATALINABASE,逐层认全七个目录的职责,完成首次启动与验证,并学会用启动日志确认装配结果。Linux 与 Windows 两条路径都会给出命令会话,装完即可进入后续所有章节的实验。 承接第 1 章的版本地图:版本线已经选定(本册实验以 9 与 10.1 双线为准),现在把它装成一个能反复折腾的实例。这一节的产出是"一个可实验的环境",第 2 章之后的所有操作都基于它。 先对齐三个数字 装 Tomcat 出的问题,八成出在没对齐数字上。哪三个?

2.1 环境准备与安装启动全流程

本节摘要:本节完成漫游前的装备检查——核对 JDK 与 Tomcat 版本的匹配关系,解压安装并区分 CATALINA_HOME 与 CATALINA_BASE,逐层认全七个目录的职责,完成首次启动与验证,并学会用启动日志确认装配结果。Linux 与 Windows 两条路径都会给出命令会话,装完即可进入后续所有章节的实验。

承接第 1 章的版本地图:版本线已经选定(本册实验以 9 与 10.1 双线为准),现在把它装成一个能反复折腾的实例。这一节的产出是"一个可实验的环境",第 2 章之后的所有操作都基于它。

先对齐三个数字

装 Tomcat 出的问题,八成出在没对齐数字上。哪三个?JDK 主版本、Tomcat 版本线的 Java 下限、你要部署的应用依赖的规范级别。按 1.3 的锁定表:跑 9 只需 Java 8 及以上,跑 10.1 需要 Java 11 及以上,跑 11 需要 Java 17 及以上。先用一条命令看清现状。

# 查看当前 JDK 版本 发行版与位数 java -version
openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment (build 17.0.10+7) OpenJDK 64-Bit Server VM (build 17.0.10+7, mixed mode)

看到 17,9、10.1、11 三条线都能跑;看到 8,就停在 9,别硬上 10.1——启动脚本会在早期就拒绝并提示版本不满足。另外确认两点:位数要统一(32 位 JDK 配 64 位 Tomcat 原生库会失败),生产上建议直接用发行版自带的解压包而非系统仓库版本,版本可控、目录干净。

下载、解压、认识七个目录

从 Apache 官方下载页取 core 下的 tar 包或 zip 包,校验和文件一并下载核对。解压即安装——Tomcat 是绿色的,没有安装器,也没有注册表。

# 解压到约定目录并进入 tar -xzf apache-tomcat-10.1.26.tar.gz -C /opt/ cd /opt/apache-tomcat-10.1.26 ls -F
bin/ conf/ lib/ logs/ LICENSE NOTICE RELEASE-NOTES RUNNING.txt temp/ webapps/ work/

七个目录,各有各的脾气,认全它们后面章节才不迷路:

目录 职责 与管道的对应
bin 启动停止脚本与脚本级环境变量 管道的总闸
conf 全部配置文件,2.2 的主角 管道设计图
lib 容器与共享库,应用都可加载 管道的公共工具间
logs 运行日志与访问日志 第 7 章排障的证据库
temp JVM 临时文件目录 易被忽略的磁盘占用户
webapps 默认应用部署目录 第 4 章部署的主战场
work JSP 编译产物与会话暂存 第 6 章 Jasper 的车间

⚠️ 常见坑:work 目录会随 JSP 数量与会话量增长,磁盘告警时它和 logs 是前两名嫌疑。清空 work 是安全的——代价只是 JSP 重新编译一遍,这正是 1.1 说过的"首访慢"。

还有一对概念要分清:CATALINA_HOME 指向安装本体(脚本与库),CATALINA_BASE 指向运行实例(配置、日志、部署的应用)。两者可以分离——一份本体带多个实例,端口与配置各不相同,这是单机多实例的标准玩法,第 7 章的集群实验会用到。

启动它,并用日志验证

Linux 下起步。先设好 JAVA_HOME 与 CATALINA_HOME,再执行启动脚本。

# 写一个环境脚本 便于反复实验 cat > /opt/tomcat-env.sh <<'EOF' export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export CATALINA_HOME=/opt/apache-tomcat-10.1.26 export CATALINA_BASE=$CATALINA_HOME EOF source /opt/tomcat-env.sh $CATALINA_HOME/bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-10.1.26 Using CATALINA_HOME: /opt/apache-tomcat-10.1.26 Using CATALINA_TMPDIR: /opt/apache-tomcat-10.1.26/temp Using JRE_HOME: /usr/lib/jvm/java-17-openjdk Tomcat started.

"Tomcat started." 只代表主进程起来了,不代表管道装配无误。验证要过两关。第一关,进程与端口。

# 确认进程存在 并查看监听端口 ps -ef | grep catalina | grep -v grep ss -tlnp | grep 8080
root 15230 1 12 14:02 pts/0 java ... org.apache.catalina.startup.Bootstrap start LISTEN 0 100 0.0.0.0:8080 users:(("java",pid=15230,fd=40))

第二关,日志里的启动完成标记与部署清单。打开 logs 目录下的 catalina.out(或当日 catalina 日志),找两样东西:Server startup in 多少毫秒,以及每个应用的部署记录。看到部署了 ROOT、docs、examples、manager、host-manager 五个默认应用,即装配完整。

tail -n 6 /opt/apache-tomcat-10.1.26/logs/catalina.out
21-Aug-2026 14:02:31.115 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in [1834] milliseconds

Windows 的路径不同,套路相同:设置 JAVA_HOME 环境变量后,在开始菜单搜 cmd 进入命令行,切到解压目录执行 bin 目录下的启动批处理;控制台窗口会持续输出日志,不要关闭。停止用同目录的关闭批处理,或直接对窗口按 Ctrl+C。

端口被占:第一次排障预演

新环境最常见的第一故障是启动即退,日志末尾出现 BindException 字样——8080 被占。处置顺序:先查谁占的(lsof 或 netstat 按端口找进程),再决定杀掉占用者还是改自己的端口。前者是别人的服务要谨慎,后者一行配置:conf 目录的 server.xml 里把 Connector 的 port 改为 8081,重启即生效。这个小小的预演就是第 7 章排障方法论的缩影:从日志末尾的异常往上读,定位到管道的某一站,再动配置

本节要点回顾

  • 三个数字先对齐:JDK 主版本、版本线 Java 下限、应用规范级别,对不齐后面全是白忙。
  • 解压即安装:绿色发行包无注册表,升级就是换目录,回滚就是换回来。
  • 七个目录各司其职:conf 是图纸、webapps 是战场、work 与 logs 是磁盘告警的常客。
  • HOME 与 BASE 可分离:一份本体多实例是单机扩展的基础设施。
  • 启动验证过两关:端口监听是形,日志里的部署清单与启动耗时是神。

装备就位,下一节拆图纸——server.xml 从外到内五层嵌套,把 conf 目录六份文件的管辖范围一次划清。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U