Linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
2011-01-27 14:17
711 查看
转自:http://blog.csdn.net/qinhl99/archive/2010/07/17/5741700.aspx
非root用户,修改tomcat启动端口为80,启动时报错:
2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
2010-07-17 13:21:42 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.5.0_16/jre/lib/i386/client:/usr/jdk1.5.0_16/jre/lib/i386:/usr/jdk1.5.0_16/jre/../lib/i386
2010-07-17 13:21:42 org.apache.coyote.http11.Http11Protocol init
严重: Error initializing endpoint
java.net.BindException: Permission denied:80
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:502)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1058)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
2010-07-17 13:21:43 org.apache.catalina.startup.Catalina load
上面可以看到,非root用户其实没有绑定80端口的权限。在Linux下低于1024的端口是root专用,而Tomcat安装后默认使用用户tomcat启动的,所以将端口改为80后启动,会产生错误:java.net.BindException: Permission denied:80
解决方法是:
第一步,重将Tomcat的端口(server.xml)由80改回8080。
第二步,通过Iptables端口实现80到8080的转发,命令为:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
用root用户直接去执行就可以了!
这样,用户访问80端口和8080端口其实都到了8080端口。
非root用户,修改tomcat启动端口为80,启动时报错:
2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
2010-07-17 13:21:42 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.5.0_16/jre/lib/i386/client:/usr/jdk1.5.0_16/jre/lib/i386:/usr/jdk1.5.0_16/jre/../lib/i386
2010-07-17 13:21:42 org.apache.coyote.http11.Http11Protocol init
严重: Error initializing endpoint
java.net.BindException: Permission denied:80
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:502)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1058)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
2010-07-17 13:21:43 org.apache.catalina.startup.Catalina load
上面可以看到,非root用户其实没有绑定80端口的权限。在Linux下低于1024的端口是root专用,而Tomcat安装后默认使用用户tomcat启动的,所以将端口改为80后启动,会产生错误:java.net.BindException: Permission denied:80
解决方法是:
第一步,重将Tomcat的端口(server.xml)由80改回8080。
第二步,通过Iptables端口实现80到8080的转发,命令为:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
用root用户直接去执行就可以了!
这样,用户访问80端口和8080端口其实都到了8080端口。
相关文章推荐
- linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
- Linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
- Linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
- Linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
- Linux系统非ROOT用户不能启动80端口tomcat
- Linux下tomcat作为守护进程运行(开机启动、以指定的用户运行、解决非root身份不能绑定1024以下端口的问题)的配置方法
- Win10系统80端口被System占用 造成Apache/IIS/Nginx不能启动的解决办法
- Win10系统80端口被System占用 造成Apache不能启动的解决办法
- Linux root用户不能通过SSH连接的问题
- 系统80端口被System占用 造成Apache不能启动的解决办法
- 3.通过进入单用户模式解决linux中的rc.local修改后无法启动的问题
- Linux64位系统下WTK无法启动的问题解决办法
- linux系统禁止root用户通过ssh登录及ssh的访问控制
- 解决linux下tomcat8上传图片other用户无法通过Nginx查看的问题
- Linux 下Tomcat非root用户不能使用80端口
- centos6.X系统非root用户启动的程序无法创建超过1024个进程的问题
- MySQL5.7 RPM方式安装后root用户不能启动及不能远程连接mysql的问题
- 关于linux下tomcat启动出现cannot find ./catalina.sh以及cannot find setclasspath问题的解决办法
- 关于wamp启动是80端口被占用的问题详解(win7系统下WAMP 80端口被Microsoft-HTTPAPI/2.0占用的解决办法)
- linux中修改环境变量之后导致系统崩溃(用户所有命令不能使用)的解决办法