Я установил 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]
Вполне возможно, что у вас что-то уже работает (или "привязано") к этому порту. Попробуйте эту команду, чтобы увидеть рассматриваемые процессы:
sudo lsof -i :80
В этом списке перечислены процессы, прослушивающие порт 80. Как только вы нашли виновника, вы знаете, какой процесс нужно kill
или kill -9
(также как superuser).
Имейте в виду, что экземпляр Apache, если предположить, что вы запустили его раньше, мог стать «устаревшим» или стать зомби. В последнем случае в некоторых случаях может потребоваться даже перезагрузка.
В противном случае используйте ответ от dedunumax.
Попробуйте sudo service apache2 start
, затем введите
sudo service apache2 status
, вторая команда покажет, запущена она или нет.
Я получил это сообщение об ошибке со следующей конфигурацией:
# 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
Я получил это как сообщение об ошибке apache со следующей конфигурацией:
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Я закомментировал запись :: 1 и выдал команду перезапуска apache.
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# sudo service httpd restart
Некоторое другое программное обеспечение, например Nginx, может работать и использовать порт 80.
Apache2 вылетел на моем VPS с той же ошибкой сообщения, и я обнаружил, что Nginx был присутствует на сервере и что-то (работа cron?) началось через несколько дней. Это вызывает конфликт, так как он использует порт 80 и каким-то образом имеет приоритет над Apache2.
Чтобы проверить, не использует ли что-нибудь уже порт 80, введите:
netstat -tulpn
Я решил это, удалив Nginx (с помощью "remove --purge" ), завершив процесс nginx и перезапустив Apache2.