Debian - порт 80 заблокирован, но я не знаю, по какому

Я не могу заставить lighttpd слушать порт 80.

~# /etc/init.d/lighttpd start
Starting web server: lighttpd2013-03-16 23:15:02: (network.c.379) can't bind to port:  80 Address already in use
 failed!

На самом деле у меня на сервере тоже установлен apache2 (прослушивает порт 80), но он не активен.

Я использовал netstat / netstat -npl, но это не помогло

Как я могу выяснить, что использует порт?

4 ответа

Решение

На дураках люди привыкли netstat для такого рода операций полезно знать, что в Linux есть еще один замечательный (и действительно превосходный) сетевой инструмент - ss, Например, чтобы узнать, какой процесс открыл порт 80, вы запускаете его так:

sudo ss -pt state listening 'sport = :80'

поэтому нет необходимости прокладывать трубы через внешние фильтры. Конечно, у него гораздо больше полезных ручек, так что ознакомьтесь с ним.

Ради полноты и с недавнего времени я сталкивался man fuser Я также могу упомянуть:

  • sudo fuser 80/tcp - этот также избавляет вас от возни cut / grep / awk … Имейте в виду, что это обозначение является сокращенным, в случае двусмысленности, вы должны использовать одно из пространств имен, разрешенных с -n …, лайк sudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80 - указал @ wallenborn. между тем -n строго не требуется, настоятельно рекомендуется, так как в противном случае он использует разрешение DNS, которое обычно сильно замедляет вывод.

Address already in use означает, что другой процесс уже прослушивает порт 80. Только один процесс может прослушивать данный порт одновременно.

Чтобы найти процесс, запустите от имени пользователя root:

netstat -tnlp | grep -w 80

Оскорбительный процесс будет указан.

Другой вариант с меньшим количеством нажатий клавиш - это lsof:

lsof -i :80

Старый поток, но кто знает, у кого-то есть та же проблема, что и у меня. В Apache2 у меня было включено более одного сайта. В одной из конфигураций сайта (/etc/apache2/sites-available) первая строка была

listen 80

Это вызвало конфликт с самим Apache! Потому что он уже слушал порт 80 как глобальный конфиг. Просто удалите "listen 80" из yoursite.conf, если Apache имеет порт 80 в качестве порта по умолчанию.

Другие вопросы по тегам