Я отримав цю помилку під час нової установки при запуску apache2 Ubuntu 12.10.
Це помилка в апачі2. Він зависає на задньому плані. Ось мій посібник щодо того, де можуть бути помилки в програмному забезпеченні.
Ось помилка, яку я отримав:
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. Химерність. Це підтвердить:
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 та сподіватися на найкраще.