apache could not bind to address

Блог о технологиях, технократии и методиках борьбы с граблями

Не стартует апач

Столкнулся тут с интересной историей, что у человека внезапно перестали работать сайты на VPS под Vesta. То есть сайты не открываются, при попытке перезагрузить апач выдается апшыпка “(99)Cannot assign requested address: make_sock: could not bind to address IP:8080

Полез смотреть – апач не запущен, при попытке стартануть, страшно ругается по матери:
# service httpd start
Starting httpd: [Thu Mar 30 13:19:33 2017] [warn] module ruid2_module is already loaded, skipping
httpd: Could not reliably determine the server’s fully qualified domain name, using root.example.com for ServerName
[Thu Mar 30 13:19:33 2017] [warn] NameVirtualHost IP1:8443 has no VirtualHosts
[Thu Mar 30 13:19:33 2017] [warn] NameVirtualHost IP2:8443 has no VirtualHosts
[Thu Mar 30 13:19:33 2017] [warn] NameVirtualHost IP3:8443 has no VirtualHosts
[Thu Mar 30 13:19:33 2017] [warn] NameVirtualHost IP4:8443 has no VirtualHosts
.
[Thu Mar 30 13:19:33 2017] [warn] NameVirtualHost IP14:8443 has no VirtualHosts
(99)Cannot assign requested address: make_sock: could not bind to address IP14:8080
no listening sockets available, shutting down
Unable to open logs
[FAILED]

Матюга NameVirtualHost IP1:8443 has no VirtualHosts можем спокойно игнорить, ибо они говорят о том, что апачу сказано слушать HTTPS соединение, а сами сайты не пошли на поводу у гугля и поэтому не настроены для работы по HTTPS.

То есть ругань эта пустопорожняя и ни к чему не обязывающая, по если раздражает, то фиксится комментированием двух последних строк с портом 8443 в файлах /etc/httpd/conf.d/IP.conf

######
NameVirtualHost IP:8080
Listen IP:8080
#NameVirtualHost IP:8443
#Listen IP:8443
#######

после чего перезапускается апач.

Но в моем случае, его надо было еще починить, для того чтобы его хотя бы запустить.

Сама ошибка “Cannot assign requested address: make_sock: could not bind to address ” говорит о том, что на порту 8080 кто то сидит и не дает забрать сокет под демона.

Смотрим кто у нас пребывает на нашем порту 8080:
# netstat -ntlp | grep 8080
никого….

довольно странно, т.ч смотрим вообще кто где сидит
# netstat -ntlp
никаких следов 80 и 8080

Оговорюсь, что я пошел неправильным путем, т.к решил что при старте апача они пытается забиньдить порт двумя инстансами, т.ч перелопатил сначала основной конфиг апача, а потом и все дополнительные.

Но это был не правильный путь, т.к проблема крылась именно в указанном в ошибке IP (у меня это IP14)

При попытке его вывести через ifconfig оказалось, что его нет в системе. Причем в самой админке весты он был добавлен и у него существовал файл /etc/httpd/conf.d/IP14.conf

Тут не совсем понятно, то ли это баг самой весты (ибо до какой то определенной версии у неё добавлялось только 11 айпишников, а дальше они тупо переписывали последний конфиг), то ли глюк хостинга.

Поэтому при старте апача, он пытался повеситься на IP14, но ввиду его физического отсутствия, апач недоуменно падал.

Собственно для запуска апача надо было, либо добавить IP14 в систему, прописав настройки в файл /etc/sysconfig/network-scripts/ifcfg-eth0:12 (1 и 2 IP это основной физический и первый виртуальный 0:0); либо удалив файл /etc/httpd/conf.d/IP14.conf

После чего вебсервер apache начал запускаться корректно

Как то раз запускал службу веб-сервера Apache, а он отказался стартовать. Начал разбираться в чём же проблема. Дело было на рабочем компьютере под ОС Microsoft Windows. Полез в журналы операционной системы: Компьютер – Свойства – Управление (Управление компьютером) – Служебные программы – Просмотр событий – Журналы Windows – Приложение. Здесь нашёл множество сообщений касательно Apache. Привожу список сообщений об ошибках найденных в журналах касательно Apache:

  • The Apache service named reported the following error: AH00558: httpd.exe: Could not reliably determine the server’s fully qualified domain name, using xxxx::yyyy:zzzz:www:nnnn. Set the ‘ServerName’ directive globally to suppress this message.
  • The Apache service named reported the following error: AH00015: Unable to open logs.
  • The Apache service named reported the following error: AH00451: no listening sockets available, shutting down.
  • The Apache service named reported the following error: (OS 10048) Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт). : AH00072: make_sock: could not bind to address 0.0.0.0:80.

Таким образом становится понятно, что Apache не может слушать 80-ый сетевой порт т.к. он уже кем-то занят, поэтому и не хочет стартовать. Т.е. надо либо настроить Apache таким образом, что бы он слушал какой-нибудь другой порт (свободный), либо же освободить 80-ый порт закрыв приложение, которое его использует или перенастроив это приложение на использование другого порта. Указать веб-серверу Apache прослушиваемый порт можно в конфигурационном файле httpd.conf директивой Listen .

Посмотрим кем занят 80-ый порт. В командой строке (она же cmd) вбиваю netstat -ab или так для более полной информации netstat -abno . И узнаю, что 80-ый сетевой порт слушает запущенный Skype. Да, я в курсе, это старая тема про которую все давно знают, что Skype по-умолчанию занимает 80-ый порт. В общем отключил в Скайп прослушивание 80-ого порта и проблема была решена. Если у вас другое приложение занимает этот порт, то соответственно отключайте или перенастраивайте его.

Update: Already fixed, it seems that one of VirtualHosts configurations files was wrong in sites-enabled.

I have Ubuntu 11.10

When I run the command to start apache2:

I get the following error message:

Starting web server apache2
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs Action ‘start’ failed.

I run this command in order to get the process that is using the port 80:

Which returns this output:

To know which process is I run this command:

But if I try to kill the process:

It doesn’t kill it, if I run again the netstat command still appears listening and apache start fails.

Оцените статью