简介:Apache Tomcat 7.0.108 是一款开源的 Java Servlet 容器,主要用于运行 JSP 与 Servlet 等 Java Web 应用。这份 zip 压缩包面向 Java Web 开发者、运维人员及计算机专业学生,帮助其快速搭建本地服务器环境,完成 Web 项目的部署、调试与运行。包内共 640 个文件,约 10.38MB,涵盖 html、class、java、jsp、gif、jar、xml、properties、bat、sh 等类型:jar 与 class 支撑运行时依赖,xml 与 properties 承载配置信息,bat 与 sh 脚本负责启动、停止及服务管理,jsp 与 html 则对应示例页面。资源完整保留了 bin、conf、lib、webapps、logs 等核心目录结构,便于读者理解 Tomcat 的部署机制与配置方式,也可直接用于开发测试环境搭建。目前已有 633 人学习下载,适合需要掌握 Tomcat 部署流程与排错思路的初、中级开发者参考使用。
1. Tomcat 7.0.108 部署环境搭建:从解压到跑通第一个页面
Tomcat 7.0.108 这个版本号,做 Java Web 的人应该都不陌生。它属于 Tomcat 7 这条老线上的最后一个稳定尾巴,很多老项目、教学环境、内部管理系统至今还跑在上面。我见过太多人拿到tomcat-7.0.108.zip之后直接双击startup.bat,结果窗口一闪而过,或者浏览器打开 8080 一片空白,然后就开始怀疑压缩包坏了。其实问题往往不在包本身,而在 JDK 版本没对上、环境变量没配、端口被占这三件事上。这篇笔记按我自己的部署习惯,把 JDK 选择、解压路径、环境变量、server.xml 配置、启动验证和常见翻车点完整走一遍,适合第一次接触 Tomcat 7 的新手,也适合需要把老项目重新拉起来的老手对照排查。
2. 装前把环境列清楚:JDK 版本和目录规划
2.1 Tomcat 7.0.108 对 JDK 的硬性要求
Tomcat 7 系列编译时依赖的是 Java 6 语法,但运行时官方推荐 JDK 6 及以上。实际部署中我一般会选 JDK 7 或 JDK 8,原因有两个:一是 JDK 6 现在很难找到干净的安装包,二是 JDK 8 对 Tomcat 7.0.108 兼容性很好,绝大多数老项目在 JDK 8 下跑 Tomcat 7 没有编译问题。但要注意,不要用 JDK 11 及以上去跑 Tomcat 7.0.108,因为高版本 JDK 移除了部分 Tomcat 7 内部依赖的 API,启动时会直接抛NoClassDefFoundError或者UnsupportedClassVersionError。
先确认本机 JDK 版本:
java -version输出里如果看到1.8.0_xxx就说明是 JDK 8,可以用。如果看到11.0.x或更高,建议单独装一个 JDK 8 并切换JAVA_HOME,不要硬扛。
提示:Tomcat 7.0.108 的
bin目录下没有jre子目录,它完全依赖外部JAVA_HOME指向的 JDK。所以JAVA_HOME必须指向 JDK 根目录,不是bin目录。
2.2 解压路径怎么选才不出玄学问题
tomcat-7.0.108.zip是免安装压缩包,解压即用。但路径里如果带中文、空格或特殊符号,启动脚本在解析CATALINA_HOME时容易出问题,典型现象是startup.bat闪退或者日志里出现乱码路径。我一般会解压到纯英文、无空格的目录,比如:
# Linux/macOS 下常见做法 unzip tomcat-7.0.108.zip -d /opt/ mv /opt/apache-tomcat-7.0.108 /opt/tomcat7 # Windows 下建议解压到 # D:\servers\tomcat7解压后目录结构里重点看三个地方:bin放启动脚本,conf放server.xml和tomcat-users.xml,webapps放默认应用。logs目录一开始可能是空的,启动后才会生成catalina.out等日志文件。
2.3 环境变量配置:三个必须写对的变量
Windows 和 Linux 下配置逻辑一样,只是写法不同。核心是三个变量:
| 变量名 | 作用 | 示例值 |
|---|---|---|
JAVA_HOME | 指向 JDK 根目录 | C:\Java\jdk1.8.0_181 |
CATALINA_HOME | 指向 Tomcat 根目录 | D:\servers\tomcat7 |
PATH | 追加%CATALINA_HOME%\bin | 便于任意目录执行startup |
Linux 下写入~/.bashrc或/etc/profile:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181 export CATALINA_HOME=/opt/tomcat7 export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH改完执行source ~/.bashrc让配置生效。Windows 下在系统属性里新建变量,注意CATALINA_HOME不要以反斜杠结尾,否则某些脚本拼接路径时会变成双斜杠,虽然多数情况能跑,但日志里看着别扭。
3. 启动与端口配置:server.xml 里改什么
3.1 第一次启动:用 startup 脚本还是 catalina run
Tomcat 7 提供两种启动方式。startup.sh/startup.bat是后台启动,窗口关掉进程还在;catalina.sh run/catalina.bat run是前台启动,日志直接打在控制台,适合第一次部署时看报错。
# Linux 前台启动,方便看日志 cd /opt/tomcat7/bin ./catalina.sh run # Windows 前台启动 cd D:\servers\tomcat7\bin catalina.bat run如果前台启动能看到Server startup in xxx ms,说明基本没问题。如果卡在某个Deploying web application不动,通常是某个 war 包在解压时卡住,或者webapps下有损坏的应用。
3.2 改 8080 端口和 shutdown 端口
conf/server.xml是 Tomcat 的核心配置文件。默认 HTTP 端口是 8080,如果本机已经有其他服务占了,启动时会报Address already in use。改端口找到这一行:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />把port="8080"改成比如port="8081"。同时注意Server标签里的shutdown端口默认是 8005,如果多台 Tomcat 装在同一台机器上,这个端口也要错开:
<Server port="8006" shutdown="SHUTDOWN">connectionTimeout是连接超时毫秒数,内网环境可以不动,公网暴露的话建议保持 20000 或调低到 10000,减少空闲连接占用。
3.3 配置管理用户和部署目录
conf/tomcat-users.xml里可以加管理界面账号,方便通过浏览器部署 war 包:
<tomcat-users> <role rolename="manager-gui"/> <user username="admin" password="admin123" roles="manager-gui"/> </tomcat-users>改完重启 Tomcat,访问http://localhost:8080/manager/html就能看到管理页面。如果不想把应用放在默认webapps下,可以在server.xml的Host标签里加Context:
<Context path="/myapp" docBase="/data/apps/myapp" reloadable="false" />reloadable="false"是生产环境必须的,设成true会让 Tomcat 监控 class 变化并自动重启应用,开发时方便,线上会拖慢性能。
4. 避坑与排查:启动失败、乱码、端口占用
4.1 现象:双击 startup.bat 窗口一闪而过
原因:JAVA_HOME没配或者指向了 JRE 而不是 JDK。Tomcat 启动脚本会检查%JAVA_HOME%\bin\java.exe是否存在,找不到就直接退出。
解决:在命令行里执行echo %JAVA_HOME%确认路径,然后检查该路径下是否有bin\java.exe。如果指向的是jre目录,改成 JDK 根目录。
4.2 现象:启动报 UnsupportedClassVersionError
原因:用高版本 JDK 编译的 class 文件在低版本 JVM 上跑,或者反过来,Tomcat 7.0.108 内部某些类不兼容 JDK 11+。
解决:统一用 JDK 8。如果机器上有多个 JDK,通过JAVA_HOME切换,不要只改PATH,因为 Tomcat 脚本优先读JAVA_HOME。
4.3 现象:日志和页面中文乱码
原因:Tomcat 7 默认URIEncoding是 ISO-8859-1,GET 请求参数里的中文会乱码。
解决:在server.xml的Connector标签里加URIEncoding="UTF-8":
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />同时确认conf/logging.properties里控制台编码和系统一致,Linux 下一般是 UTF-8,Windows 下如果控制台是 GBK,日志文件用 UTF-8 打开会乱,这个属于查看工具的问题,不是 Tomcat 本身的问题。
4.4 现象:Address already in use
原因:8080 或 8005 被其他进程占用。常见的是本机已经跑了一个 Tomcat,或者某个 IDE 内置了 Tomcat。
解决:Linux 下netstat -tlnp | grep 8080找到进程号,Windows 下netstat -ano | findstr 8080。确认不是关键服务后杀掉,或者改 Tomcat 端口。
4.5 现象:内存溢出 OutOfMemoryError
原因:默认 JVM 堆内存较小,部署稍大的应用就撑不住。
解决:在bin/catalina.sh或catalina.bat里加JAVA_OPTS:
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"Tomcat 7 跑在 JDK 8 下时,PermSize相关参数会被忽略但不会报错,JDK 8 用 Metaspace 替代了永久代。如果确定用 JDK 8,可以只写-Xms和-Xmx。
5. 装完怎么验证:三个必查项和一个习惯
5.1 验证 Tomcat 是否真正跑通
第一步,看启动日志最后几行有没有Server startup in。第二步,浏览器访问http://localhost:8080,看到 Tomcat 默认首页说明 HTTP 连接器正常。第三步,访问一个实际部署的应用,比如把某个 war 包丢进webapps,看是否能自动解压并访问。
# Linux 下快速检查端口和进程 ss -tlnp | grep 8080 ps -ef | grep tomcat如果首页能打开但应用 404,检查webapps下应用目录是否生成,以及logs/catalina.out里有没有Deploying web application后的异常堆栈。
5.2 用 manager 页面确认应用状态
配置好tomcat-users.xml后,访问/manager/html,输入账号密码。页面里会列出所有已部署应用,Running状态为true才算真正启动。如果某个应用Running是false,点进去看异常信息,多数是web.xml配置错误或依赖 jar 缺失。
5.3 我每次部署完都会做的一件事
不管多急,我都会在启动后执行一次tail -f logs/catalina.out,观察至少 30 秒。因为有些错误不是启动瞬间暴露的,比如数据库连接池初始化失败、定时任务抛异常,这些会在启动后几秒到几十秒内打到日志里。只看首页能不能打开就收工,后面出问题再回头翻日志,成本高得多。
从那以后我每次部署 Tomcat 7.0.108 都强制走一遍「前台启动看日志 → 改端口和编码 → 配管理用户 → 验证应用状态」这个流程,再也没出现过窗口一闪而过就抓瞎的情况。希望帮到你。
本文还有配套的精品资源,点击获取