Apache 2 не удалось подключиться, адрес уже используется

Apache 2 не удалось подключиться, адрес уже используется

Я установил Apache 2 на Ubuntu 12.10. Когда я пытаюсь запустить службу с помощью sudo /etc/init.d/apache2 start, я получаю следующее сообщение.

*Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.                                 [fail]

решение1

Вполне возможно, что у вас уже что-то запущено на этом порту (или "привязано к нему"). Попробуйте эту команду, чтобы увидеть рассматриваемые процессы:

sudo lsof -i :80

Здесь перечислены процессы, прослушивающие порт 80. Как только вы нашли виновника, вы знаете, какой процесс следует удалить kill( kill -9также как суперпользователь).

Имейте в виду, что экземпляр Apache, если вы запустили его раньше, мог стать "устаревшим" или превратиться в зомби. В последнем случае в некоторых случаях может потребоваться даже перезагрузка.

В противном случае воспользуйтесь ответом dedunumax.

решение2

Пытатьсяsudo service apache2 start

затем введите

sudo service apache2 status

вторая команда покажет, запущена она или нет.

решение3

Я получил это сообщение об ошибке при следующей конфигурации:

# cat /etc/hosts
127.0.0.1   localhost
127.0.0.1   foo
...

# cat /etc/apache2/sites-enabled/foo
<VirtualHost foo:80>
...

# cat /etc/apache2/ports.conf 
...
NameVirtualHost *:80
Listen localhost:80
...

Изменение ports.confна следующее решило проблему:

NameVirtualHost *:80
Listen 127.0.0.1:80

решение4

Возможно, запущено какое-то другое программное обеспечение, например Nginx, которое использует порт 80.

Apache2 рухнул на моем VPS с тем же сообщением об ошибке, и я обнаружил, что Nginx присутствовал на сервере и что-то (задание cron?) запустило его несколько дней спустя. Это провоцирует конфликт, так как он использует порт :80 и каким-то образом имеет приоритет над Apache2.

Чтобы проверить, использует ли уже что-либо порт :80, введите:

netstat -tulpn

Я решил эту проблему, удалив Nginx (с помощью «remove --purge»), остановив процесс nginx и перезапустив Apache2.

Связанный контент