Cara terbaik untuk memecahkan masalah apache tidak dimulai?

8

Kami baru-baru ini mendapatkan server cadangan untuk mencerminkan semua data kami jika server utama turun.

Saya mendapatkan semua data situs diperbarui melalui rsync, dan semua konfigurasi apache dan basis data diperbarui. Kedua mesin berada di Ubuntu 9 (9,04 pada primer, 9,10 pada cadangan).

Jadi semuanya tampaknya disinkronkan untuk sebagian besar pada saat ini (masih perlu mencari tahu sinkronisasi pengguna), dan saya mencoba untuk memulai Apache. saya mendapat

* Starting web server apache2                                       [fail]

Tidak ada lagi yang menunjukkan apa masalahnya.

Saya tahu saya tidak punya cukup info untuk mengharapkan solusi dari kalian, jadi saya hanya ingin tahu di mana saya bisa pergi dari sini untuk menyelidiki lebih lanjut masalah ini. Apakah ada log kesalahan untuk ini?

Terima kasih!

Keuntungan rendah
sumber
sejauh ini, saya telah menemukan log yang mengatakan "Tidak ada file atau direktori: mod_fcgid" - ini adalah awal yang baik
Lowgain

Jawaban:

11

Dalam beberapa kasus tertentu, entri log tidak akan ditulis ke disk - ini dapat terjadi jika log tidak ada, misalnya, atau Apache tidak bisa menulis ke file log karena masalah izin, dll. Dalam kasus seperti itu, Cara terbaik untuk mendiagnosis kesalahan adalah dengan menggunakan `strace ':

[root@server ~]# strace -Ff apachectl start

Sementara output akan sangat bertele-tele, jika Apache gagal memulai dengan alasan apa pun, Anda akan melihat tulisan () di bagian ujung dengan isi dari apa yang akan dimasukkan dalam log dengan alasan gagal (jika tidak masuk log mengapa di log kesalahan, jangan heran jika pesan kesalahan berisi "Tidak dapat membuka log" dengan path ke log;).

Meskipun melihat komentar Anda tentang mod_fcgid, saya sarankan meninjau konfigurasi Apache dan memeriksa referensi untuk mod_fcgid - sepertinya mencoba untuk membuka file "mod_fcgid" literal sebagai lawan memuat modul.

slm
sumber
13

httpd -t akan menguji sintaks dari file konfigurasi Anda dan memuntahkan kesalahan ke terminal.

Ignacio Vazquez-Abrams
sumber
2
Ini sangat membantu. +1
Tom Busby
Jika itu tidak berhasil, coba apachectl -t.
berry120
3

Setiap kesalahan harus dicetak ke log kesalahan (sering di / var / log / http / error_logs. Grep for ErrorLog di httpd.conf Anda untuk mencari tahu di mana.

Saya sarankan menggunakan dua jendela. Lakukan 'tail -f error_log' di satu jendela, dan gunakan jendela lain untuk menjalankan perintah 'apachectl restart'. Setelah Anda menemukan kesalahan, perbarui jawaban Anda di sini dengan pesan kesalahan.

Stefan Lasiewski
sumber
Langkah pemecahan masalah nomor satu dalam apa pun harus selalu dibaca log. Apache mencatat hampir setiap peristiwa yang melewatinya, jadi Anda harus penuh dengan data untuk dibaca.
phuzion
2

Saya memiliki masalah yang sama dengan debug server apache di Mac OS, jadi memutuskan untuk berbagi pengalaman saya dan menghemat waktu orang lain saya menemukan yang berikut ini sangat membantu:

  1. cari log:

apachectl -S | grep log

  1. dalam output Anda akan menemukan beberapa file log Anda dapat mulai mencari contoh kesalahan:

tail -n 15 /var/log/apache2/ssl_engine.log

Seandainya ada lebih dari 1 file log, teruslah membuntuti mereka sampai Anda menemukan kesalahan yang menyebabkan apache tidak dimulai

taliboni
sumber
0

Jika Apache Anda tidak berjalan, periksa port skype Anda, sebagian besar waktu skype dan apache menggunakan port 80, dan itu berarti skype mungkin menjadi alasan mengapa apache tidak dapat memulai. hentikan skype jika sudah diinstal.

Biffon Momanyi
sumber