Tomcat啓動時報錯:java.net.BindException: Permission denied :80

問題起因:做負載均衡時需要將Web工程與Wap工程同時部署在一臺Suse服務器上,爲方便日後維護,我們分別爲Web工程與Wap工程分配了不同的用戶進行部署,並且端口使用分別爲8080與80,Web工程使用默認8080端口,Tomcat正常啓動並能正常訪問,Wap工程使用80端口(修改server.xml),Tomcat啓動一系列錯誤(見問題描述)。

問題描述:Tomcat啓動時報一系列錯誤:
問題1:SEVERE: Error starting endpointjava.net.BindException: Permission denied<null>:80 
atorg.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)atorg.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565)atorg.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203)atorg.apache.catalina.connector.Connector.start(Connector.java:1087)atorg.apache.catalina.core.StandardService.start(StandardService.java:534)atorg.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:581) atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597) atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
問題2:SEVERE: StandardServer.await:create[8005]: 
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
atjava.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
atjava.net.ServerSocket.<init>(ServerSocket.java:194)
atorg.apache.catalina.core.StandardServer.await(StandardServer.java:373)
atorg.apache.catalina.startup.Catalina.await(Catalina.java:662)
atorg.apache.catalina.startup.Catalina.start(Catalina.java:614)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

原因分析:
問題1:在Suse上只有root用戶纔可以訪問1024以下的端口號,其餘用戶不能訪問。
問題2:服務器上已經存在一個Tomcat,並且該Tomcat佔用了8005端口。

解決方案:
問題1:修改Tomcat的server.xml配置文件,將端口修改爲8081(或者其他1024以上的端口號,不能與本機上的其它Tomcat端口衝突),然後使用root用戶登錄服務器,執行端口重定向命令:iptables-t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port8081。意思就是當訪問80端口時重定向到8081端口,這樣,我們可以改成任何我們需要的端口啦。
問題2:想必大家都很容易解決這樣的問題吧,確實,只需要修改server.xml中的8005端口即可,最好將其他端口也同時修改一下,防止出現衝突。


轉自http://blog.sina.com.cn/s/blog_6eea02c50100x8aj.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章