Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Заранее известно, что процессы апача все убиты, а других приложений, юзающих 80й порт нету. Просто апача упала, но не освободила сокет :/
Мож тебе TUX(браузер уровня ядра) мешается, попробуй его грохнуть, чтоб апачу не мешал.
ReplyDeleteили вот http://frankmash.blogspot.com/2005/11/address-already-in-use-makesock-could.html
или может грохнуть в конфиге Listen 80
Я же сказал, что это точно не процесс занимает, это просто не освобожденный сокет :/
ReplyDeleteПаш, если это не освобожденный сокет, то наверное тупо ждать таймаута. А то мож у тебя там всетаки какойнить skype порт занимает?)))
ReplyDeleteКак вариант попробовать в конфиге апачи сделать
Listen [твой реальный ип, а не 127.0.0.1 или 0.0.0.0]:80
Кстати, netstat -lnp | grep '0.0.0.0:80' ченить выдает?
А то мож там кто сидит.
Это все проверено тысячу раз, софтины нету. Но сокет занят ^__^ и lsof говорит, что правда никого нету :)
ReplyDeleteА есть ли возможность может написать программулину на C+ которая бы сокет освобождала...
ReplyDeleteОдин из вариантов, но все же считаю, что есть стандартный механизм для этого.
ReplyDeleteНу если что, вот про Перл и сокеты
ReplyDeletehttp://www.opennet.ru/base/dev/perl_socket2.txt.html
Вообще говоря челу с аналогичной проблемой помогло вот это http://opennet.ru:8101/openforum/vsluhforumID8/1472.html
ReplyDeleteКстати, если после остановки апача сделать killall -9 httpd, а потом перезапустить апачу?
ReplyDeleteТак поможет, у нас есть приложение которое точно так же себя ведет. После падения, убивать приходится.
ReplyDeletetcp_tw_recycle - BOOLEAN
ReplyDeleteEnable fast recycling TIME-WAIT sockets. Default value is 0.
It should not be changed without advice/request of technical
experts.
tcp_tw_reuse - BOOLEAN
Allow to reuse TIME-WAIT sockets for new connections when it is
safe from protocol viewpoint. Default value is 0.
It should not be changed without advice/request of technical
experts.
мне помогло: fuser -k -n tcp 80
ReplyDeleteубивает все что держит 80 порт
И мне помогло. убил процессы и запустил нужный. теперь надо найти, где запускаются эти процессы.
DeleteУ меня проблема решилась удалением лишней директивы Listen 80
ReplyDeleteПоскольку она должна во всём конфиге быть только одна, а было несколько в файлах виртуальных хостов.
И такое бывает, ага. И крайне часто, кстати.
ReplyDeleteПроверить, занят ли порт 80 каким нибудь приложением в windows можно командой netstat -aon, в колонке local adress ищете 0.0.0.80, если его там нет - значит порт не занят, если есть смотрите колонку state и pid. В моем случае порт занимал Skype, state было listening, pid - 4316. PID - идентификатор процесса. Посмотреть что за процесс можно во вкладке Процессы диспетчера задач, перед этим во вкладке Вид->Выбрать столбцы включите "Идентификатор процесса (PID)". Skype закрыл - все работает.
ReplyDeleteК сожалению, тут Линукс и порт точно свободен, но "недоосвобожден".
ReplyDeleteКомменты рулят - помогло
ReplyDeleteЧасто ценность комментариев много выше ценности самой статьи :)
ReplyDeleteПавел, спасибо! голову сломала пока пыталась решить эту проблему..
ReplyDeleteпроблема решилась удалением лишней директивы Listen 80
ReplyDeleteвопрос а как и где можно посмотреть есть ли лишнии директивы Listen 80 ???
Ребят, ответьте на последний вопрос - очень интерессно! Спасибо!!
ReplyDeleteP.S. fuser -k -n tcp 80 помогло - кроме него - ничего не выгружало апачу с 80 порта
Спасибо комментариям. Была такая же ошибка, оказалось что на 80 сидит nginex, для апача в ports.conf прописал другие порты и заработало.
ReplyDeleteПод Windos10 так просто порт 80 не освободить, его занимает системная программа NT Kernel & System. Поменял в httpd.conf Port 80 (& ServerName & VirtualHost) на 3900 и все заработало. Этот номер порта был прописан в httpd.pid, который генерируется даже при неудачном запуске Apache.
ReplyDelete