Saya mencoba mengatur VM yang menjalankan Ubuntu 12.04. Saya memiliki dua host virtual yang dikonfigurasi menggunakan port 80, tetapi Apache tidak akan memulai.
Saya mendapatkan kesalahan ini:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80
Output dari netstat -tulpn
menunjukkan bahwa tidak ada yang menggunakan port 80. Apa yang mungkin menyebabkan ini?
12.04
apache2
virtualization
Gunner Barnes
sumber
sumber
grep -ri listen /etc/apache
dansudo netstat -ntlp | grep 80
.grep -ri listen /etc/apache2
output: etc / apache2 / httpd.conf: Dengarkan 80 /etc/apache2/httpd.conf: Dengarkan 443 /etc/apache2/ports.conf: Dengarkan 80 /etc/apache2/httpd.conf: Dengar 443 / etc / apache2 / httpd.conf: Dengarkan 443sudo netstat -ntlp | grep 80
keluaran apa-apa.Jawaban:
Pastikan Anda tidak mendeklarasikan
Listen 80
dua kali dalam file .conf.Misalnya, Anda mungkin memilikinya baik di dalam maupun di
ports.conf
penginapansites-enabled/www.conf
.Untuk mengetahuinya, gunakan:
grep -ri listen /etc/apache2
Simpan
Listen 80
di satu tempat saja.sumber
Menjawab cara saya memecahkan masalah ini. Semoga bermanfaat bagi seseorang di masa depan.
Mencoba
netstat -ltnp | grep :80
Ini akan mengembalikan sesuatu seperti
Lalu lari
Di mana 1047 adalah pid dari program yang berjalan pada port 80. Anda dapat mengganti pid yang Anda peroleh dari
netstat
sumber
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
Ketika saya memiliki masalah ini, ternyata karena Apache saya tidak dapat memulai saat boot karena saya memiliki situs SSL yang memerlukan kata sandi yang harus dimasukkan untuk sertifikat.
Cara yang baik untuk mengetahui apakah ini masalahnya bagi Anda adalah menjalankan a
ps -ef | grep apache
: jika ini mengembalikan proses yang terlihat seperti/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA
itu sedang menunggu kata sandi dimasukkan di terminal yang tidak akan pernah Anda lihat.Pertama, saya membunuh proses yang digantung (mengirimkan
kill -HUP
ID proses untuk proses / usr / sbin / apache2 harus cukup untuk membunuh yang lain juga, tetapi melakukan yang lainps -ef | grep apache
untuk memastikan).Kemudian saya mengikuti instruksi dalam posting ini untuk membuat file kata sandi SSL yang tidak memerlukan kata sandi untuk dimasukkan. Kemudian
service apache2 start
berfungsi dengan baik, dan Apache mulai dengan benar setelah reboot.sumber
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:
Alamat sudah digunakan? Apa yang bisa menggunakannya? Saksikan berikut ini:
Itu berarti apache2 mencegah apache2 memulai. Aneh. Ini akan mengkonfirmasi:
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:Dan ketika Anda meminta apache2ctl untuk statusnya, itu hang.
Jadi Ubuntu tampaknya mengalami kesulitan mengelola apache2 saat bootup. Saatnya untuk menghentikan apache2:
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 bahwaps
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
.Itu adalah tautan simbolis yang tidak kita inginkan ada di sana. Lakukan ini untuk mencegah apache2 memulai saat boot:
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.
Sebagai gantinya, jalankan apache2 seperti ini:
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.
sumber
Saya memiliki server Nginx yang mendengarkan pada server AWS EC2 saya, saya pikir itu sudah dikonfigurasi ketika saya sedang membangun EC2, maka saya mendapatkan alamat yang sudah dalam kesalahan penggunaan. Jadi saya menghentikan layanan dan memulai layanan Apache2:
sumber
Saya sudah menemukan jawabannya. Saya memiliki duplikat Dengarkan 80 perintah di httpd.conf dan ports.conf saya
Juga, dalam menyalin file konfigurasi untuk server yang sedang divirtualisasi, saya lalai memperhatikan bahwa direktori log kesalahan telah diubah. Melihat ke dalam log kesalahan itu, saya perhatikan bahwa direktori untuk
mime.types
file konfigurasi salah dalamhttpd.conf
file saya . Saya memperbarui parameter itu, dan server mulai baik-baik saja.sumber
Listen 80
perintah duplikat di sayahttpd.conf
danports.conf
Ini berarti Anda port 80 sudah digunakan, baik mengubah port untuk apache2 (yang saya tidak sarankan) dengan mengedit:
Atau tutup aplikasi yang berjalan di port 80:
Untuk menemukan apa yang sedang berjalan pada port 80.
sumber
netstat -antp | grep 80
tidak menghasilkan apa-apa juga.Sekedar petunjuk bagi siapa saja, yang mungkin menjalankan VirtualBox dengan jaringan NAT. Saya menemukan, memiliki aturan NAT antara tamu dan tuan rumah saya telah mengatur dirinya sendiri, mengikat port
sumber
Bukan hanya duplikat menyebutkan
tetapi juga menyebutkan ini di samping Dengarkan 80
sumber