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

如何解决Web 服务器启动失败 8080 端口已被使用的问题
<h1>Web 服务器启动失败 8080 端口已被使用</h1>
<p><a href="https://raja.anbazhagan.dev/">拉贾·安巴扎甘</a>2021 年 2 月 21 日</p>
<p>在这篇文章中,我们将尝试了解<strong>Web</strong><strong>服务器</strong> <strong>启动</strong> <strong>失败</strong> <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>如果您收到“端口 8080 已在使用”错误,则可以确定另一个应用程序已在使用该端口.</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>
</pre>
<p><code>server.port=9090</code></p>
<p><small>代码语言: 属性 (properties )</small></p>
<p>您还可以将端口号作为应用程序参数传递。</p>
<pre>
</pre>
<p><code>java - jar my-server.jar --server.port=9090</code></p>
<p><small>代码语言: bash ( bash )</small></p>
<p>或 JVM 参数。</p>
<pre>
</pre>
<p><code>java - jar -Dserver.port=9090 my-server.jar</code></p>
<p><small>代码语言: bash ( bash )</small></p>
<p>这样,应用程序在不同的端口上启动。因此“Web 服务器无法启动。避免了端口 8080 已在使用中”错误。</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>
</pre>
<p><code>sudo lsof -n -i :8080 | grep LISTEN sudo netstat -nlp | grep :8080 sudo ss -lptn 'sport = :8080'</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>
</pre>
<p><code>#to kill process gracefully kill -15 25321</code></p>
<p><small>代码语言: bash ( bash )</small></p>
<p>或者</p>
<pre>
</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>
</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>
</pre>
<p><code>taskkill /PID 25321 /F </code></p>
<p><small>代码语言: bash ( bash )</small></p>
<p>正如我之前所说,对于您的机器,进程 ID 可能不同。<code>/F</code>那里可以强制终止进程。在大多数情况下,您不需要此标志。</p>
<h2>结论</h2>
<p>因此,我们了解了端口的工作原理以及如何解决应用程序启动时出现“端口 8080 已被使用”的错误。如果您喜欢这篇文章,那么您可能想阅读以下标题</p>
<p> </p>
<p><a href="https://springhow.com/web-server-failed-to-start-port-8080-was-already-in-use/">原文</a></p>
评论 (0)
加载评论中…