Saya mendapatkan kesalahan ini pada instalasi baru ketika memulai apache2 Ubuntu 12.10.
Ini bug di apache2. Itu akan digantung di latar belakang. Inilah langkah-langkah saya untuk menemukan bug yang ada dalam perangkat lunak.
Inilah kesalahan yang saya dapatkan:
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]
Alamat sudah digunakan? Apa yang bisa menggunakannya? Saksikan berikut ini:
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
Itu berarti apache2 mencegah apache2 memulai. Aneh. Ini akan mengkonfirmasi:
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
Ya, dalam hal ini apache2 sedang berjalan, saya mencoba memulai apache2 untuk kedua kalinya pada port yang sama.
Yang membingungkan saya adalah bahwa service
laporan bahwa apache2 TIDAK berjalan:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
Dan ketika Anda meminta apache2ctl untuk statusnya, itu hang.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Jadi Ubuntu tampaknya mengalami kesulitan mengelola apache2 saat bootup. Saatnya untuk menghentikan apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Petunjuk besar! Anda mencoba untuk menghentikan apache2 dan kehilangan proses id! Jadi Ubuntu tidak dapat menghentikan apache2 karena ia tidak tahu di mana ia berada!
Anda mungkin berpikir reboot akan memperbaikinya, tetapi itu bukan karena apache2 dimulai saat boot dan hang. Proses boot normal untuk apache2 tidak berfungsi dengan benar.
Jadi Bagaimana cara memperbaikinya?
Saya dapat memperbaiki ini dengan menganalisis ps
output perintah. Perhatikan bahwa ps
perintah memberitahu kita bahwa proses itu dimulai oleh "/etc/rc2.d/S91apache2 start".
Itu adalah program menyinggung yang membutuhkan tendangan cepat.
/etc/rc2.d/S91apache2
adalah tautan simbolis yang digunakan untuk memulai apache2 untuk Anda saat komputer dimulai. Untuk beberapa alasan tampaknya mulai apache2 dan kemudian hang. Jadi kita harus mengatakannya untuk tidak melakukannya.
Jadi lihatlah itu /etc/rc2.d/S91apache2
.
el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
Itu adalah tautan simbolis yang tidak kita inginkan ada di sana. Lakukan ini untuk mencegah apache2 memulai saat boot:
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
Nyalakan kembali komputer untuk memastikan apache2 tidak memulai dan menggantung. Oke bagus. Sekarang Anda BISA meletakkan apache2 kembali seperti dulu, tapi itu akan membuatnya gagal lagi.
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
Sebagai gantinya, jalankan apache2 seperti ini:
sudo service apache2 start
Dan apache2 kembali dan melayani halaman lagi. Tampaknya ada beberapa bug serius dengan apache2 / Ubuntu 12.10 yang menyebabkan apache2 untuk memulai dan menggantung. Ini adalah solusinya, saya kira perbaikannya adalah untuk mendapatkan versi apache2 dan Ubuntu yang lebih baru dan berharap yang terbaik.