Tomcat 启动报错 java.net.BindException: Permission denied :80

永利网址,在Linux的下面部署了Apache,为了安全我们使用非root用户进行启动,但是在域名绑定时无法直接访问80端口号。众所周知,在Unix下,非root用户不能监听1024以下的端口号,这个Apache服务器就没办法绑定在80端口下。所以这里需要使用Linux的端口转发机制,把到80端口的服务请求都转到8080端口上。

Tomcat一启动就报如下错误:

Linux版本:CentOS

Caused by: java.net.BindException: Permission denied <null>:80

在root账户下面运行一下命令:

        at
org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:410)
        at
org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
        at
org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
        at
org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
        at
org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
        … 13 more
造成原因:在linux系统上只有root用户才可以访问1024以下的端口号,其余用户不能访问。

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port
8080

解决方法1:

另外如果防火墙重新启动,该命令就会失效,可以使用下面的命令把该规则保存到iptables里面。

在启动Tomcat时,使用sudo ./startup.sh或使用root用户启动

service iptables save

解决方法2:

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

修改Tomcat的server.xml配置文件,

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-04/116851.htm

将端口修改为8081(或者其它1024以上的端口号,但不能与本机上的其它端口冲突),

永利网址 1

然后使用root用户登录服务器,执行端口重定向命令:

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port
8081