You need to enable JavaScript to run this app. GCP虚拟机调整配置重启后Tomcat8访问报404错误排查求助
优惠活动
大模型
产品
解决方案
定价
更多

GCP虚拟机调整配置重启后Tomcat8访问报404错误排查求助

核心问题本质

你当前看到的Tomcat原生404页面,说明Tomcat进程本身正常运行、并未出现崩溃,核心原因是Tomcat没有加载到你部署的业务应用,和你之前调整GCP虚拟机配置、重启实例的操作直接相关。
你之前通过shutdown.sh看到的CATALINA_BASE路径是静态脚本推导的结果,不是服务实际运行时的真实配置,和你的部署路径存在明显错位。

分步骤排查与修复操作
  • 校验运行中Tomcat的实际工作目录
    执行命令获取进程真实启动参数:ps -ef | grep tomcat
    重点查看输出中-Dcatalina.base对应的路径值。Debian仓库安装的Tomcat8,设计上会将/usr/share/tomcat8作为程序包存放目录,将可变的运行时目录(包含webapps部署目录、应用配置)默认放在/var/lib/tomcat8下。如果启动参数中该路径被错误指向/usr/share/tomcat8,Tomcat就只会去该目录下的webapps文件夹寻找应用,无法读取你部署在/var/lib/tomcat8/webapps下的业务内容,最终返回原生404。
    注意:不要手动执行Tomcat安装目录下的shutdown.sh/startup.sh做服务运维,Debian仓库安装的Tomcat8由systemd托管,手动执行脚本时会使用脚本所在目录作为默认CATALINA_BASE,看到的路径配置不反映服务真实运行状态,正确的启停操作应通过systemctl start tomcat8、systemctl stop tomcat8完成。
  • 确认应用部署位置与访问路径匹配
    Tomcat访问http://localhost:8080/根路径时,默认会加载webapps目录下名称为ROOT的应用:
    • 如果你部署的是带名称的应用包(比如order.war),直接访问根路径必然返回404,需要访问http://localhost:8080/order才可正常加载
    • 执行命令核对应用文件:ls -l /var/lib/tomcat8/webapps,确认你期望对外提供服务的应用是否在目录内,排查是否因为实例重启导致文件丢失、磁盘挂载异常被清空
  • 检查目录权限配置
    执行命令校验权限:ls -ld /var/lib/tomcat8 /var/lib/tomcat8/webapps
    确保目录属主为系统创建的tomcat用户,权限不低于755;webapps下的应用文件、war包也要保证tomcat用户有读权限,避免重启实例过程中磁盘权限重置,导致Tomcat无法读取部署文件、跳过应用加载。
  • 核对运行时日志的加载记录
    直接查看Tomcat实际运行日志,路径默认在/var/log/tomcat8/catalina.out,在日志中检索两类关键信息:
    • 检索Deploying web application archive,确认日志中记录的部署文件路径是否和你的应用路径一致
    • 检索SEVERE/Error,排查是否存在war包损坏、应用XML配置解析失败等导致应用部署中断的问题
  • 修复启动配置漂移
    如果第一步检查发现catalina.base路径错位,执行命令查看systemd托管的Tomcat启动配置:systemctl cat tomcat8
    确认配置中CATALINA_BASE环境变量的值,正常应为/var/lib/tomcat8,如果被错误配置为/usr/share/tomcat8,修正配置后执行systemctl daemon-reload,再重启Tomcat服务即可恢复。

内容的提问来源于stack exchange,提问作者dgarg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 20:54:06