tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]

本文介绍了在CentOS环境下使用非root用户启动Tomcat遇到的端口权限问题及解决办法。通过修改Tomcat配置文件中的端口号或使用iptables进行端口重定向,可以有效避免因端口权限不足导致的服务启动失败。
tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]


问题:使用非root账户tomcat启动tomcat报错:


19-Sep-2016 15:08:27.168 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
19-Sep-2016 15:08:27.179 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-80"]
 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:339)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:737)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:457)
        at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:120)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:567)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:576)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)


19-Sep-2016 15:08:27.180 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]


 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-80]]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:567)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:576)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        ... 12 more
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:339)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:737)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:457)
        at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:120)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
        ... 13 more


问题分析:在centos上只有root用户才可以使用1024以下的端口号,其余用户不能


2.解决方案


方法①修改Tomcat的server.xml配置文件,将端口修改为8081(或者其他1024以上的端口号,不能与本机上的其它Tomcat端口冲突)


vim /usr/local/apache-tomcat-8.0.52/conf/server.xml
    <Connector port="8081" protocol="HTTP/1.1" 
               connectionTimeout="30000" 
               maxThreads="2000"
               acceptCount="2000"
               URIEncoding="UTF-8"
               redirectPort="9143" />
    <!-- A "Connector" using the shared thread pool-->


方法②修改端口后,使用root用户登录服务器,执行端口重定向命令:iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8081


意思就是当访问80端口时重定向到8081端口,这样,我们可以改成任何我们需要的端口啦。


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


切换到tomcat账号,启动tomcat服务

转载于:https://www.cnblogs.com/reblue520/p/6239707.html

Internal error java.net.SocketException: Permission denied: bind at java.base/sun.nio.ch.UnixDomainSockets.bind0(Native Method) at java.base/sun.nio.ch.UnixDomainSockets.bind(UnixDomainSockets.java:129) at java.base/sun.nio.ch.ServerSocketChannelImpl.unixBind(ServerSocketChannelImpl.java:326) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:299) at java.base/java.nio.channels.ServerSocketChannel.bind(ServerSocketChannel.java:224) at com.intellij.platform.ide.bootstrap.DirectoryLock.tryListen(DirectoryLock.java:273) at com.intellij.platform.ide.bootstrap.DirectoryLock.lockOrActivate(DirectoryLock.java:214) at com.intellij.platform.ide.bootstrap.StartupUtil.lockSystemDirs(startup.kt:492) at com.intellij.platform.ide.bootstrap.StartupUtil.access$lockSystemDirs(startup.kt:1) at com.intellij.platform.ide.bootstrap.StartupUtil$startApplication$lockSystemDirsJob$1$1.invokeSuspend(startup.kt:112) at com.intellij.platform.ide.bootstrap.StartupUtil$startApplication$lockSystemDirsJob$1$1.invoke(startup.kt) at com.intellij.platform.ide.bootstrap.StartupUtil$startApplication$lockSystemDirsJob$1$1.invoke(startup.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:44) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:166) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source) at com.intellij.platform.diagnostic.telemetry.impl.TracerKt.span(tracer.kt:56) at com.intellij.platform.diagnostic.telemetry.impl.TracerKt.span$default(tracer.kt:48) at com.intellij.platform.ide.bootstrap.StartupUtil$startApplication$lockSystemDirsJob$1.invokeSuspend(startup.kt:111) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:613) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:1189) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:778) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:765) Suppressed: java.net.SocketException: Permission denied: bind at java.base/sun.nio.ch.UnixDomainSockets.bind0(Native Method) at java.base/sun.nio.ch.UnixDomainSockets.bind(UnixDomainSockets.java:129) at java.base/sun.nio.ch.ServerSocketChannelImpl.unixBind(ServerSocketChannelImpl.java:326) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:299) at java.base/java.nio.channels.ServerSocketChannel.bind(ServerSocketChannel.java:224) at com.intellij.platform.ide.bootstrap.DirectoryLock.tryListen(DirectoryLock.java:273) at com.intellij.platform.ide.bootstrap.DirectoryLock.lockOrActivate(DirectoryLock.java:163) ... 17 more Suppressed: java.net.ConnectException: Connection refused: connect at java.base/sun.nio.ch.UnixDomainSockets.connect0(Native Method) at java.base/sun.nio.ch.UnixDomainSockets.connect(UnixDomainSockets.java:166) at java.base/sun.nio.ch.UnixDomainSockets.connect(UnixDomainSockets.java:162) at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:878) at com.intellij.platform.ide.bootstrap.DirectoryLock.tryConnect(DirectoryLock.java:315) at com.intellij.platform.ide.bootstrap.DirectoryLock.lockOrActivate(DirectoryLock.java:171) ... 17 more Suppressed: java.nio.file.NoSuchFileException: C:\Users\lenovo\AppData\Roaming\JetBrains\IdeaIC2025.2\.lock at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:106) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:112) at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) at com.intellij.platform.core.nio.fs.DelegatingFileSystemProvider.newByteChannel(DelegatingFileSystemProvider.java:145) at java.base/java.nio.file.Files.newByteChannel(Files.java:380) at java.base/java.nio.file.Files.newByteChannel(Files.java:432) at java.base/java.nio.file.Files.readAllBytes(Files.java:3281) at java.base/java.nio.file.Files.readString(Files.java:3359) at java.base/java.nio.file.Files.readString(Files.java:3318) at com.intellij.platform.ide.bootstrap.DirectoryLock.remotePID(DirectoryLock.java:408) at com.intellij.platform.ide.bootstrap.DirectoryLock.lockOrActivate(DirectoryLock.java:179) ... 17 more ----- JRE: 21.0.9+1-b1038.76 amd64 (JetBrains s.r.o.) D:\RUANJIAN\IntelliJ IDEA Community Edition 2025.2.5\jbr
最新发布
12-06
org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:966) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:934) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:786) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:300) at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:132) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:95) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:82) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:211) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:184) at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:95) at org.springframework.data.redis.core.DefaultSetOperations.members(DefaultSetOperations.java:158) at org.springframework.data.redis.core.DefaultBoundSetOperations.members(DefaultBoundSetOperations.java:152) at org.springframework.session.data.redis.RedisSessionExpirationPolicy.cleanExpiredSessions(RedisSessionExpirationPolicy.java:132) at org.springframework.session.data.redis.RedisOperationsSessionRepository.cleanupExpiredSessions(RedisOperationsSessionRepository.java:430) at org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration.lambda$configureTasks$0(RedisHttpSessionConfiguration.java:248) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:233) at io.lettuce.core.RedisClient.connectStandalone(RedisClient.java:253) at io.lettuce.core.RedisClient.connect(RedisClient.java:202) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:56) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:959) ... 24 common frames omitted Caused by: io.netty.channel.AbstractChannel$AnnotatedSocketException: Permission denied: no further information: /127.0.0.1:6379 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715) at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:665) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ... 1 common frames omitted Caused by: java.net.SocketException: Permission denied: no further information ... 11 common frames omitted 2025-07-22 15:04:02.693 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-3] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:02.693 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-3] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:07.708 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-4] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:07.708 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-4] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:12.724 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-5] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:12.724 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-5] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:17.732 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-6] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:17.732 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-6] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:22.749 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-7] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:22.749 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-7] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:27.756 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-8] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:27.756 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-8] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:32.762 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-9] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:32.762 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-9] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:37.791 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-10] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:37.791 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-10] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:42.802 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-11] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:42.802 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-11] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:47.811 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-12] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:47.811 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-12] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:52.821 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-13] Connection failure occurred. Restarting subscription task after 5000 ms 2025-07-22 15:04:52.821 E [org.springframework.data.redis.listener.RedisMessageListenerContainer] [redisMessageListenerContainer-13] Connection failure occurred. Restarting subscription task after 5000 ms
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值