Я получил эту ошибку при новой установке при запуске apache2 Ubuntu 12.10.
Это ошибка в apache2. Он зависает на заднем плане. Вот мое пошаговое руководство о том, где могут быть ошибки в программном обеспечении.
Вот ошибка, которую я получил:
el@titan:~$ sudo service apache2 start * Starting web server apache2 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80no listening sockets available, shutting downUnable to open logsAction 'start' failed.The Apache error log may have more information. [fail]
Адрес уже используется? Что могло бы его использовать? Проверить это:
el@titan:~$ grep -ri listen /etc/apache2/etc/apache2/apache2.conf:# supposed to determine listening ports for incoming connections, and which/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts/etc/apache2/ports.conf:Listen 80/etc/apache2/ports.conf: Listen 443/etc/apache2/ports.conf: Listen 443
Это означает, что apache2 препятствует запуску apache2. Странный. Это подтвердит:
el@titan:~$ ps -ef | grep apache2root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 startroot 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl startroot 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k startroot 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSAel 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
Да, в этом случае apache2 запущен, я пытался запустить apache2 во второй раз на том же порту.
Что меня смущает, так это то, что service
сообщает, что apache2 НЕ запущен:
el@titan:~$ sudo service apache2 statusApache2 is NOT running.
И когда вы запрашиваете apache2ctl для его статуса, он зависает.
root@titan:~# /usr/sbin/apache2ctl status**hangs until Ctrl-C is pressed.
Таким образом, Ubuntu, похоже, испытывает проблемы с управлением apache2 при загрузке. Время остановить apache2:
root@titan:~# /usr/sbin/apache2ctl stophttpd (no pid file) not running
Большая подсказка! Вы пытаетесь остановить apache2, и он потерял идентификатор процесса! Таким образом, Ubuntu не может остановить apache2, потому что он не знает, где он находится!
Вы могли бы подумать, что перезагрузка исправит это, но это не так, потому что apache2 запускается при загрузке и зависает. Обычный процесс загрузки apache2 работает неправильно.
Так как же это исправить?
Я смог это исправить путем анализа ps
вывод команды. Обратите внимание, что ps
команда сообщает нам, что этот процесс был запущен с помощью "/etc/rc2.d/S91apache2 start".
Это программа-нарушитель, которая нуждается в быстром ударе.
/etc/rc2.d/S91apache2
это символическая ссылка, используемая для запуска apache2 для вас при запуске компьютера. По какой-то причине кажется, что он запускает apache2, а затем зависает. Так что нам придется сказать ему, чтобы он этого не делал.
Так что иди и взгляни на это /etc/rc2.d/S91apache2
.
el@titan:/etc/rc2.d$ ls -llrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
Это символическая ссылка, и мы не хотим, чтобы она там была. Сделайте это, чтобы предотвратить запуск apache2 при загрузке:
root@titan:~# sudo update-rc.d -f apache2 remove Removing any system startup links for /etc/init.d/apache2 ... /etc/rc0.d/K09apache2 /etc/rc1.d/K09apache2 /etc/rc2.d/S91apache2 /etc/rc3.d/S91apache2 /etc/rc4.d/S91apache2 /etc/rc5.d/S91apache2 /etc/rc6.d/K09apache2
Перезагрузите компьютер, чтобы убедиться, что apache2 не запускается и не зависает. Хорошо, хорошо. Теперь вы МОГЛИ бы вернуть apache2 в прежнее состояние, но это снова привело бы к сбою.
root@titan:~$ sudo update-rc.d apache2 defaults //(don't do this) Adding system startup for /etc/init.d/apache2 ... /etc/rc0.d/K20apache2 -> ../init.d/apache2 /etc/rc1.d/K20apache2 -> ../init.d/apache2 /etc/rc6.d/K20apache2 -> ../init.d/apache2 /etc/rc2.d/S20apache2 -> ../init.d/apache2 /etc/rc3.d/S20apache2 -> ../init.d/apache2 /etc/rc4.d/S20apache2 -> ../init.d/apache2 /etc/rc5.d/S20apache2 -> ../init.d/apache2
Вместо этого запустите apache2 следующим образом:
sudo service apache2 start
И apache2 снова работает и снова обслуживает страницы. Похоже, в apache2 / Ubuntu 12.10 есть несколько серьезных ошибок, из-за которых apache2 запускается и зависает. Это обходной путь, я полагаю, что решение состоит в том, чтобы получить более новые версии apache2 и Ubuntu и надеяться на лучшее.