← 返回内容列表

如何解决端口已被使用的问题

如何解决端口已被使用的问题

如何解决Web 服务器启动失败 8080 端口已被使用的问题

<h1>Web 服务器启动失败 8080 端口已被使用</h1> <p><a href="https://raja.anbazhagan.dev/">拉贾&middot;安巴扎甘</a>2021 年 2 月 21 日</p> <p>在这篇文章中,我们将尝试了解<strong>Web</strong><strong>服务器</strong>&nbsp;<strong>启动</strong>&nbsp;<strong>失败</strong>&nbsp;<strong>端口 8080 已在使用中的</strong>错误以及如何修复它。</p> <p><img alt="Web 服务器无法启动。 8080 端口已被使用" src="https://springhow.com/wp-content/uploads/2021/02/image-26-1024x330.png" style="height:330px; width:1024px" /></p> <h2>为什么端口 8080 已被使用?</h2> <p>在网络中,IP 地址标识每台机器。同样,网络端口标识机器上运行的应用程序或进程。当应用程序想要使用一个端口时,操作系统会绑定一个。但是,当多个应用程序要使用同一个端口时,就会出现端口冲突。</p> <p>在我们的例子中,<strong>端口 8080 已经被</strong>另一个应用程序使用,因此<strong>web 服务器无法启动</strong>。通常,您会在端口 8080、8081、9090 等情况下收到此错误。因此,通常,<em>如果您收到&ldquo;端口 8080 已在使用&rdquo;错误,则可以确定另一个应用程序已在使用该端口.</em></p> <p>这很可能是由于您的最终配置错误,多次运行应用程序,或者没有使用<a href="https://springhow.com/start-stop-scripts-for-spring-boot-applications/">正确的启动和关闭脚本</a>。</p> <h2>修复Web服务器启动失败</h2> <p>众所周知,原因是另一个进程正在同一端口上运行。要解决这个问题,您有两个选择。</p> <ol> <li>尝试在 8080 以外的端口上运行应用程序。</li> <li>识别并停止在该特定端口上运行的进程</li> </ol> <h2>选项 1:在不同的端口上运行您的 Web 服务器</h2> <p>大多数应用程序框架都提供了更改它们侦听的端口的选项。例如,您可以通过以下方式更改 Spring Boot 应用程序的应用程序端口。</p> <p>您可以在 application.properties 文件中提供具有不同端口号的<strong>server.port</strong>配置。</p> <pre> &nbsp;</pre> <p><code>server.port=9090</code></p> <p><small>代码语言: 属性 (properties )</small></p> <p>您还可以将端口号作为应用程序参数传递。</p> <pre> &nbsp;</pre> <p><code>java - jar my-server.jar --server.port=9090</code></p> <p><small>代码语言: bash ( bash )</small></p> <p>或 JVM 参数。</p> <pre> &nbsp;</pre> <p><code>java - jar -Dserver.port=9090 my-server.jar</code></p> <p><small>代码语言: bash ( bash )</small></p> <p>这样,应用程序在不同的端口上启动。因此&ldquo;Web 服务器无法启动。避免了端口 8080 已在使用中&rdquo;错误。</p> <p>有一篇关于<a href="https://springhow.com/change-default-port-number-in-spring-boot/">如何以</a>5 种不同方式更改默认 tomcat 端口号的详细帖子。您还可以在其<a href="https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config">官方文档</a>中找到有关 Spring Boot 配置如何工作的更多详细信息。</p> <h2>选项 2:杀死在端口 8080 上运行的服务器</h2> <p>有时,另一个进程只是同一应用程序的旧实例或您不想运行的应用程序。在这些情况下,最好识别并杀死它们,以便您可以在该特定端口上启动应用程序。为此,您需要首先确定流程。其次,你需要杀死它。</p> <p>假设您在端口 8080 上运行时遇到错误。那么您应该使用以下命令来识别进程或服务。</p> <h3>在 Linux/Mac 上查找并杀死在端口 8080 上运行的进程</h3> <p>以下命令之一应提供在端口 8080 上运行的应用程序或服务的进程 ID (PID)。</p> <pre> &nbsp;</pre> <p><code>sudo lsof -n -i :8080 | grep LISTEN sudo netstat -nlp | grep :8080 sudo ss -lptn &#39;sport = :8080&#39;</code></p> <p><small>代码语言: bash ( bash )</small></p> <p><img alt="修复 Web 服务器无法启动。 8080 端口已被使用" src="https://springhow.com/wp-content/uploads/2021/02/image-24-1024x149.png" style="height:149px; width:1024px" /></p> <p>python http服务器在端口8080上运行,PID为25321</p> <p>使用上述输出中的 PID,您可以使用以下命令终止该进程。</p> <pre> &nbsp;</pre> <p><code>#to kill process gracefully kill -15 25321</code></p> <p><small>代码语言: bash ( bash )</small></p> <p>或者</p> <pre> &nbsp;</pre> <p><code>#To force kill a process kill -9 25321</code></p> <p><small>代码语言: bash ( bash )</small></p> <p>通过杀掉占用8080端口的进程,web服务器就可以正常启动了。</p> <p>为了您的使用,请将进程 ID 替换为您在机器上找到的进程 ID。</p> <p>在windows上查找并杀死在8080端口上运行的进程</p> <p>同样,您可以运行以下命令来识别 Windows 中端口上运行的进程。</p> <pre> &nbsp;</pre> <p><code>netstat -ona | findstr :8080 | findstr LISTENING</code></p> <p><small>代码语言: bash ( bash )</small></p> <p><img alt="在 windows 中查找端口 8080 上运行的进程的命令" src="https://springhow.com/wp-content/uploads/2021/02/image-25-1024x154.png" style="height:154px; width:1024px" /></p> <p>进程 23928 监听 8080 端口</p> <p>获得进程 ID 后,可以使用以下命令将其杀死。</p> <pre> &nbsp;</pre> <p><code>taskkill /PID 25321 /F </code></p> <p><small>代码语言: bash ( bash )</small></p> <p>正如我之前所说,对于您的机器,进程 ID 可能不同。<code>/F</code>那里可以强制终止进程。在大多数情况下,您不需要此标志。</p> <h2>结论</h2> <p>因此,我们了解了端口的工作原理以及如何解决应用程序启动时出现&ldquo;端口 8080 已被使用&rdquo;的错误。如果您喜欢这篇文章,那么您可能想阅读以下标题</p> <p>&nbsp;</p> <p><a href="https://springhow.com/web-server-failed-to-start-port-8080-was-already-in-use/">原文</a></p>

评论 (0)

加载评论中…