无法用我的服务器监听端口 80

问题描述 投票:0回答:3

对于此类问题非常新,我正在尝试在端口 80 上启动服务器(使用这个特定端口对我来说很重要)。

它失败了,但它可以在其他端口上工作(甚至< 1024 when i am root, but still fail on the port 80).

我可能有一些东西在端口 80 上运行,我想识别它以便更改其侦听端口。

我看到这个cmd可以帮助查看特定端口的状态:

netstat -ano|grep 80|grep LISTEN
但我不确定你是否理解结果。

这是我得到的:

tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::80                   :::*                    LISTEN      off (0.00/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     8805     /tmp/mongodb-27017.sock
unix  2      [ ACC ]     STREAM     LISTENING     13112    /home/me/.pulse/04d802bb34ddb9da49b1f9060000000b-runtime/native

我在第2行看到80端口似乎没有监听,但不明白进一步。

更新:

sudo lsof -i :80

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1107     root    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1131 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1132 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1133 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1134 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1136 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
ubuntu-ge 2095     me    7u  IPv4  82145      0t0  TCP me-Ubuntu.local:43345->mulberry.canonical.com:http (CLOSE_WAIT)

谢谢(我使用的是ubuntu)!

unix ubuntu port
3个回答
13
投票

如果这是 Linux(也许还有其他一些 UNIX,但不是 MacOS),请尝试运行以下命令:

sudo netstat -lnp

您将获得类似于以下内容的输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
...
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     26156/apache2       
...

我会列出有趣的部分:

  • 本地地址:0.0.0.0:80 - 有问题的地址是所有接口上的端口 80。
  • 状态:LISTEN - 正在听
  • PID/程序名称 - 26156/apache2 - 正在侦听端口的进程的 ID 和名称。

您基本上想要确保上面提到的程序没有运行(例如,就我而言,我必须关闭 apache2 守护进程,并将操作系统配置为在下次启动时不自动启动它)。

另一方面,如果您只是想快速解决此问题,则可以终止该进程:

kill -9 <pid>

在我的例子中:

kill -9 26156

问题当然会在您下次重新启动或有人启动该服务时再次出现。


4
投票

您可以使用

lsof
来查找:

sudo lsof -i :80

如果您没有

lsof
,请使用

安装
sudo apt-get install lsof

lsof
就像瑞士军刀工具,可以告诉谁正在打开文件和套接字。


0
投票

如果端口 80 上的 netstat 或通过 lsof -i :80 没有显示任何内容,则尝试在 sudo 中运行服务器,然后应该显示在端口 80 上侦听的内容。对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.