Linux下Tomcat启动正常,但浏览器无法访问Tomcat
问题:
虚拟机上安装centOS7,配置Tomcat并成功启动。但是在浏览器里却无法访问Tomcat 8080端口。
tomcat的配置,请参考文章:Linux-CentOS7 配置 Tomcat
原因:
因为CentOS 7或RHEL 7或Fedora,默认防火墙是由firewalld来管理,而firewalld没有对8080端口开放,所以进行8080端口开放配置。
CentOs 7 之前的版本,由iptables控制Linuxs的端口。
CentOS升级到7之后,无法使用iptables控制Linuxs的端口,因为是Centos 7使用firewalld代 替了原来的iptables。
以下提供两种方式解决该问题。
解决方案一,还原传统的iptables管理方式。
1、执行命令设置firewalld
systemctl stop firewalld
systemctl mask firewalld
2、安装iptables-services
执行命令:yum install iptables-services
image.png
如果不安装,直接执行iptables相关命令会报错:
Failed to stop iptables.service: Unit iptables.service not loaded.
3、关闭防火墙
执行命令:systemctl stop iptables
4、编辑 vi /etc/sysconfig/iptables
添加以下内容并保存退出:
#允许8080端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
#允许3306端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
#允许9904端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9904 -j ACCEPT
image.png
5、重启防火墙
执行命令:systemctl restart iptables
6、打开外部浏览器,输入http://centOS IP:8080
即可看到Tomcat欢迎界面!
解决方案二,firewalld 进行8080端口开放配置
1、在firewalld 上开放8080端口
输入命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令解析:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数设置,重启后会失效。
2、重启防火墙
输入命令:firewall-cmd --reload
image.png
3、打开外部浏览器,输入http://centOS IP:8080,即可看到Tomcat欢迎界面!