Server baru saja ditingkatkan dari Squeeze ke Wheezy. Setelah reboot, saya mencatat bahwa apache2 tidak memulai, jadi instal bootlogd untuk memeriksa output skrip init.
Output kesalahan dari awal apache adalah,
Tue Feb 3 08:49:55 2015: [....] Starting web server: apache2(99)Cannot assign requested address: make_sock: could not bind to address [0123:4567:890:abc::d]:80
Tue Feb 3 08:49:55 2015: no listening sockets available, shutting down
Tue Feb 3 08:49:55 2015: Unable to open logs
Tue Feb 3 08:49:55 2015: Action 'start' failed.
Tue Feb 3 08:49:55 2015: The Apache error log may have more information.
Stempel waktu di keluaran boot menunjukkan 4s antara "Konfigurasi antarmuka jaringan" (08:49:51) dan mulai apache.
Saya telah mengatasi ini dengan memasukkan sleep 5
ke dalam /etc/init.d/apache2
setelah apache2 mulai baik-baik saja, jadi saya membacanya sebagai inisialisasi jaringan lambat (mungkin khusus untuk jaringan IPv6). Server berjalan di VMWare, dan saya hanya memiliki akses ke VM.
- Metode apa yang lebih baik yang bisa saya gunakan untuk membuat Apache menunggu beberapa detik dan memeriksa alamatnya sudah berjalan sebelum mulai?
- Atau untuk membuat skrip init jaringan tidak keluar sampai alamatnya siap?
linux
networking
debian
apache-http-server
Chris Burgess
sumber
sumber
init.d
meretas. Baru saja memposting jawaban lengkap. Semoga ini bisa membantu!Jawaban:
Nah, metode yang saya uraikan jelas tidak menyelesaikan masalah mendasar. Tapi saya percaya menggunakan alat pemantauan mandiri yang dapat menangani tugas "menendang Apache ke layanan" tanpa harus meretas
init.d
skrip adalah solusi yang lebih stabil. Kuncinya adalah menggunakanmonit
yang digambarkan sendiri sebagai:Untuk menginstalnya di Ubuntu, lakukan saja ini; Saya menggunakan
aptitude
dan ini di Ubuntu 12,04 FWIW:Setelah terinstal, saya ingin mengatur server email default untuk mengirim peringatan. Ini mengasumsikan Anda memiliki
postfix
atausendmail
aktif di server Anda. Bukamonit
file kontrol dengan editor teks favorit Anda; Saya suka menggunakannano
:Cari
set mailserver
baris dan atur baris ini dan simpanmonit
file kontrol:Sekarang periksa dan pastikan ada
monit
conf.d
pengaturan direktori; disinilahmonit
tugas individu diatur:Jika entah bagaimana
/etc/monit/conf.d
itu tidak diatur, buat seperti ini:Sekarang setelah itu selesai, mari kita buat
monit
aturan Apache. Pertama, cari tahu di mana.pid
file Apache diatur dan periksa apakah sudah diatur. Ini biasanya di mana ia diatur pada Ubuntu 12.04 menggunakan instalasi paket Apache default:Jika
.pid
filepath itu benar, mari kita buat aturanmonit
Apache yang sebenarnya dengannano
seperti ini:Dan tempatkan kode ini di file itu dan simpan:
Logika ke skrip cukup sederhana:
monit
Apache ruleset akan memeriksa/var/run/apache2.pid
file dan ia tahu untuk menggunakaninit.d
arahan khususstart
danstop
logika. Sihir berasal dariif
/then
blok yang pada dasarnya memonitor port Apache80
di localhost127.0.0.1
dan akan mengambil tindakan untuk memulihkan Apache jika ada batas waktu 15 detik atau lebih. Danalert
saluran akan mengirimkan peringatan email ke alamat email yang ditentukan jika kondisitimeout
ataunonexist
terpenuhi; itu opsional jadi jangan ragu untuk berkomentar jika Anda tidak perlu dibanjiri oleh peringatan email.Sekarang restart
monit
:Dan Anda dapat mengikuti
monit
log di sini untuk melihatnya melakukan hal itu dan men-debugnya jika sesuatu tidak berfungsi seperti yang diharapkan:Jadi ketika debu mengendap di server itu, Anda akan memiliki
monit
pengaturan untuk memastikan Apache berjalan. Sangat berguna sebagai alat umum "jaga agar server web Apache tetap hidup", tetapi dalam kasus Andamonit
dapat mengambil alih tugas untuk memastikan Apache muncul saat reboot / startup sehingga Anda tidak perlu repot-repot denganinit.d
skrip Apache inti yang benar-benar agak berantakan dan mudah dilupakan di masa depan saat upgrade.Juga perhatikan, saya dapat melihat bahwa Anda mengikat Apache secara eksplisit ke IPv6, tetapi skrip pemantauan ini mengasumsikan bahwa jika tidak dapat mencapai
127.0.0.1
maka ia harus mengambil tindakan. Mungkin Anda perlu mengubah alamat localhost IPv4 dari127.0.0.1
ke alamat setara IPv6::1
. Eksperimen dan lihat apa yang berhasil.sumber