前言:
最近使用tomcat搭建了一套测试环境的应用,整个搭建过程也很简单,就是将部署包上传至服务器☞解压☞启动tomcat服务器,当然服务器也是成功启动了,但是发现前端应用报404,具体如下图所示。
一、现象及思路
1、 现象
前端应用访问界面
catalina.out日志界面
如上图所示,我们看到,前端应用是报404的错误,但是tomcat的catalin.out动态日志却是没有报错信息的,因此刚没有去怀疑是端口占用的问题。因为直接用ip:端口的方式是能正常访问的。
2、思路
此时排查时初始部署包没有问题的情况下,我们通过lsof:8080的命令去查看我们端口的使用情况,就突然知道为啥了。
lsof -i :8080 #查看8080占用情况
如上图所示,我们发现默认8080端口被njet应用占用了,因此我们需要更改默认端口,或者停用njet。
二、另外一个思路
1、cat catalina.out
我们通过cat /data/tomcat/logs/catalina.out (具体替换成实际catalina.out的路径)来查看所有的tomcat的启动日志,这时我们会发现出现的日志会非常多,如下图所示,整版都是日志。很难去获取我们需要的信息。
2、grep -C 20 '8080'
grep -C 20 '8080' /data/tomcat/logs/catalina.out (具体替换成实际catalina.out的路径)
通过grep -C 20 '8080' 的形式,我们就能成功定位到出现8080相关日志的前后20行日志,这样就能快速的帮我们分析问题了,结果如下图所示。
如上图所示我们看到日志中,显示端口被占用了,此时我们去修改端口为一个未被占用的端口即可。
3、端口修改
tomcat端口配置文件在conf/server.xml文件里面,我们只需将对应端口修改成需要的端口即可。具体如下图所示。
三、总结
重启后生效,皆大欢喜,对应tomcat这种轻应用,通过catalina.out日志动态排查问题,是个很好的办法,但是因为里面的日志较多,我们需要使用grep 来获取关键的上下日志行,来快速定位问题。