本文共 1622 字,大约阅读时间需要 5 分钟。
开启tomcat失败,报错提示 Permission denied
报错信息如下:
Caused by: java.net.SocketException: Permission denied at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1082) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:267) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:66) at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
原因是在Centos7 中,非root用户不能开启1024以下的端口。比如我用twilight用户开启tomcat,就会报错。解决方法是通过iptables防火墙重定向端口,将80端口重定向到8080端口上去。
在Centos7中,默认的防火墙是 firewalld 需要先挂关闭它,再使用iptables防火墙。关闭firewall防火墙systemctl stop firewalld.service关闭firewall开机自启systemctl disable firewalld.service
接着安装iptables
yum install iptables-services
开放端口:
// 查看现有的iptables 规则iptables -L -n// 开放端口,临时的,重启会失效iptables -I OUTPUT -p tcp --dport 22 -m state --state NEW -j ACCEPTiptables -I INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
将80 端口 重定向到8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
永久保存iptable配置
// 保存iptables-save > /etc/sysconfig/iptables