Debian Tomcat 出现 404 的排查与修复
一 快速自检
- 核对访问地址:确保协议、主机、端口、应用上下文路径与资源路径均正确,注意 Linux 大小写敏感、斜杠与结尾斜杠。示例:http://服务器IP:8080/应用名/。
- 确认应用已部署:在 /var/lib/tomcat9/webapps/ 下应有你的应用目录或 WAR 包,且已解压;访问 http://IP:8080/ 能看到 Tomcat 欢迎页(ROOT 应用)。
- 检查默认首页:确认应用的 WEB-INF/web.xml 中有 ,如 index.html、index.jsp。
- 查看服务与端口:执行
sudo systemctl status tomcat9;用 ss -ltnp | grep 8080 或 netstat -tulpen | grep 8080 确认 8080 端口监听正常。
- 简单验证:在应用目录(如 /var/lib/tomcat9/webapps/ROOT/)放一个 test.html,访问 http://IP:8080/test.html 验证静态资源能否访问。
二 看日志定位根因
- 查看主日志与实时输出:
sudo tail -f /var/log/tomcat9/catalina.out
grep -i "error\|exception\|failed" /var/log/tomcat9/catalina.out
- 查看应用日志与访问记录:
cat /var/log/tomcat9/localhost.<日期>.log
grep "你的URL" /var/log/tomcat9/localhost.<日期>.log
- 关注日志中的关键信息:请求的 URL、应用的 context path、返回码 404、是否提示部署失败或类/资源缺失等,以判断是路径问题、映射问题还是部署问题。
三 常见原因与对应修复
- 资源或路径不存在:文件未放在正确目录(应在应用的 webapps/应用名/ 下),或文件名/路径大小写错误。修正路径与文件名,必要时重新部署 WAR。
- 应用未部署或部署失败:WAR 损坏、未解压或启动异常。删除残缺目录,重新部署并观察 catalina.out 启动日志。
- Servlet 映射错误:web.xml 中 servlet 与 servlet-mapping 的 url-pattern 与访问路径不匹配。修正映射或改用注解映射。
- welcome-file 缺失:目录访问未落到默认首页。在 web.xml 增加
<welcome-file>index.html</welcome-file> 等。
- 上下文路径错误:访问 /app 却部署为 /ROOT 或相反。使用正确上下文路径或调整
server.xml 的 Context。
- 端口冲突或防火墙:端口被占用导致服务异常或访问不到。改用未占用端口,或调整防火墙放行对应端口。
- 文件权限不足:Tomcat 运行用户对应用目录无读权限。修正权限:
sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/你的应用,sudo chmod -R 755 /var/lib/tomcat9/webapps/你的应用。
- 配置语法错误:server.xml / web.xml 语法或标签闭合错误。校验并修复后重启。
- 缓存问题:浏览器或反向代理缓存了 404 响应。清缓存、禁用代理缓存或重启 Tomcat 后再试。
四 配置与重启的正确姿势
五 仍未解决时的最小复现与求助信息
- 最小复现步骤:
- 在 /var/lib/tomcat9/webapps/test/ 创建 index.html(内容随意)。
- 访问 http://IP:8080/test/。
- 若仍 404,提供:访问的完整 URL、应用目录结构(tree 或 ls)、相关 web.xml 片段、catalina.out 与 localhost.<日期>.log 中对应时间段的日志、以及
ss -ltnp | grep 8080 的输出。