CentOS 7安装Tomcat后localhost:8080无法访问排查流程
浏览器里输入localhost:8080,页面却一片空白,Tomcat明明刚装完,服务也启动了,就是打不开。别急着重装,把下面这套流程跑一遍,九成问题都能定位。

先确认Tomcat到底起没起
很多人看到“启动成功”就关终端,其实日志里可能藏着端口冲突。跑一条:
ps -ef | grep java
如果只看到一条grep本身,说明进程根本没起来。再敲:
systemctl status tomcat
Active: failed直接给出失败原因,照着改就行。若Active: running,继续看端口:

netstat -tnlp | grep 8080
没回显就是端口没监听,Tomcat还在启动途中或已经崩溃,去$CATALINA_HOME/logs/catalina.out翻最新异常,OutOfMemory、Permission denied、Address already in use这三样最常见。
防火墙把8080吃了
CentOS 7默认firewalld是开着的,8080不在白名单。两条命令搞定:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

再访问,如果瞬间出猫,说明就是墙的问题。别图省事直接systemctl stop firewalld,生产环境这么干等于裸奔。
SELinux拦了一道
日志里看见“Permission denied”但权限明明777,八成是SELinux。临时关:
setenforce 0
立刻能访问就把策略写永久:
semanage port -a -t httpportt -p tcp 8080
不想装semanage,用yum装policycoreutils-python-utils。记得setenforce 1再开回去,安全与功能两手抓。
server.xml配错地址
有人图安全,把Connector地址改成127.0.0.1,结果远程访问不到;也有人手滑写成localhost结果本机也打不开。核对:
vi $CATALINA_HOME/conf/server.xml
找到<Connector port="8080" ... />,确认address属性要么删掉,要么写0.0.0.0。改完重启:
systemctl restart tomcat
JDK版本对不上
Tomcat 10要求JDK 11以上,CentOS 7默认yum给的openjdk 1.8。启动日志里若出现“UnsupportedClassVersionError”,直接升级:
yum install java-11-openjdk-devel
再改环境变量:
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> /etc/profile
source /etc/profile
重启服务,版本冲突秒消失。
端口被别的程序抢走
有时8080被Nginx、Docker甚至另一个Tomcat占用。lsof一把梭:
lsof -i :8080
看到非java进程,就考虑换端口或停掉对方。改端口在server.xml里把8080换成8888,防火墙、SELinux策略同步加一遍,别只改一半。
本地hosts文件作怪
少数情况,localhost被指向奇怪地址。ping一把:
ping -c 2 localhost
如果返回::1 IPv6地址,而Tomcat只监听IPv4,就把/etc/hosts里这一行:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
注释掉,再试。
systemd启动脚本缺参数
自己写的tomcat.service没加
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
会导致服务起是起了,变量不对,应用起不来。检查:
systemctl cat tomcat
缺啥补啥,重载:
systemctl daemon-reload
再启动。
一次排不完,记得看日志
Tomcat的日志分三块:catalina.out、localhost.log、manager.log。页面空白优先看catalina.out;应用部署失败看localhost.log;用户登录失败看manager.log。日志比百度更懂你。
走完流程还打不开?
把上面九步按顺序打钩,九成九能解决。若仍不行,把catalina.out最后五十行贴出来,对照异常栈一行行搜,基本都能翻到答案。再不行,换个机器重装,问题不在Tomcat,就在操作系统。
