云服务器 centos 7 部署 tomcat 后外部不能访问应用(端口、防火墙、安全组,版本)
问题背景
在 centos7 部署了 tomcat 服务后,启动成功,通过浏览器访问应用时没有响应,但是能 ping 通 centos 机器的 IP。看到有人配置了安全组,仍然无法访问,就修改Tomcat下server.xml中address为本机ip,其实大多数的错误在于防火墙没有重新加载和安全组。无法访问的问题有两大类:限制类和版本类,接下来我为大家分析下,希望对大家有所帮助。
限制类,主要有端口、防火墙和安全组,这三个相互关联,解决方法如下:
1、查看默认防火墙状态
firewall-cmd --state
如果防火墙已经开启则显示如下:
running
如果防火墙未开启则显示:
not running
此时我们执行以下命令开启防火墙:
systemctl start firewalld.service
2、检查防火墙的状态
systemctl list-unit-files|grep firewalld.service
如果显示 masked(如果显示 disabled,跳过本步骤)则执行如下命令:
systemctl unmask firewalld
再次检查防火墙状态,这里显示为 disabled
firewalld.service disabled
3、添加开放的端口(要是改了端口,命令依次改就好):
firewall-cmd --zone=public --add-port=8080/tcp --permanent
(永久的添加该端口。去掉--permanent则表示临时。)
4、重新加载防火墙(不然仍然访问不到):
firewall-cmd --reload
5、查看开放的端口
firewall-cmd --list-ports
此时显示已有刚刚开放的8080端口:
3306/tcp 514/tcp 6379/tcp 8080/tcp 6060/tcp 7070/tcp 8081/tcp 8082/tcp 8083/tcp
6、附其他命令
#启动一个服务
systemctl start firewalld.service
#关闭一个服务
systemctl stop firewalld.service
#将防火墙服务设置为开机自启动
systemctl enable firewalld.service
#关闭开机自动启动
systemctl disable firewalld.service
#查看端口
firewall-cmd --zone= public --query-port=80/tcp
#删除端口
firewall-cmd --zone= public --remove-port=80/tcp --permanent
7、在确保防火墙和端口已经启动的情况下,配置安全组,网上配置安全组额方法搜索一大堆,这里不在重复。
版本类,主要的问题在于启动方面,看看启动日志,发现Tomcat8和Tomcat9版本启动时会报错如下
Tomcat ans APR lib : requires the APR/native library which is not available
此时,应该从这方面入手解决问题,解决方法网上也有,但是大多数的解决方案为:
Tomcat7\bin下的tcnative-1.dll拷贝到jdk\bin目录下替换
或者
安装tomcat-native(包括插件openssl、apr、apr-util)
但是安装tomcat-native后对于版本Tomcat8或者Tomcat9,仍然不起作用(亲测),所以本人又换回了Tomcat7,要是哪位大神将apr运行模式整好了,可以给我分享下,谢谢!
参考
作者:Rebs_Hugo
原文:https://blog.csdn.net/Rebs_Hugo/article/details/85042602