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 в качестве порта по умолчанию.