Я получил эту ошибку при новой установке при запуске 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:80
no listening sockets available, shutting down
Unable to open logs
Action '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. Bizarre. Это подтвердит:
el@titan:~$ ps -ef | grep apache2
root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl start
root 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k start
root 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
Да, в этом случае apache2 работает, я пытался запустить apache2 второй раз на том же порту.
Что меня смущает, так это service
сообщения о том, что apache2 НЕ работает:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
И когда вы запрашиваете у apache2ctl его статус, он зависает.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Таким образом, Ubuntu, похоже, испытывает проблемы с управлением apache2 при загрузке. Время остановить apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (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 -l
lrwxrwxrwx 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 и надеяться на лучшее.