一、问题现象
CentOS7操作系统下,已经部署并启动Tomcat,Tomcat可见。但使用其他PC的浏览器访问不了Tomcat。
二、分析原因
此问题的主要原因在于CentOS操作系统有防火墙。防火墙的存在,会导致端口无法被外部访问。
想要解决这一问题,就是要在防火墙上添加允许访问的端口号,使端口号对外开放。
CentOS7以下默认防火墙是iptables,CentOS7及以上版本的默认防火墙是firewalld。因此,
CentOS7需要在firewalld的上添加Tomcat的端口号。
备注:
执行命令,即可实现取防火墙服务的锁定
systemctl unmask firewalld
需锁定该服务时可输入以下命令行执行
systemctl mask firewalld
三、解决方案
1、检查防火墙状态
# firewall-cmd --state
1
返回值为“running”,即防火墙运行。
若无返回信息,则防火墙为关闭状态,启动防火墙的命令如下:
# systemctl start firewalld
1
2、检查防火墙上开启的端口信息
# firewall-cmd --permanent --zone=public --list-ports
1
返回信息为空,说明当前防火墙未开启任何端口。
3、开启Tomcat的端口
上一步返回信息为空,这里将Tomcat的端口添加到防火墙中。
命令解析:
--zone #做用域
--add-port=8080/tcp #添加端口,格式为:端口/通信协议
--permanent #永久生效,没有此参数设置,重启后会失效。
参数permanent,表示永久的添加此端口。若命令中未添加此参数,表示临时性添加端口,系统重启后将此设置失效。
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
14、重新加载防火墙设置
重新加载防火墙设置,使配置生效。这一步不做,浏览器还是访问不了Tomcat。
# firewall-cmd --reload
1
5、验证Tomcat配置是否生效
# firewall-cmd --zone=public --query-port=8080/tcp
1
返回“yes”,表示配置生效。
也可以通过下面命令验证。
# firewall-cmd --permanent --zone=public --list-ports
或
firewall-cmd --list-port
1
有对应的端口信息返回,表示配置生效。