Saya ingin menjalankan apache di Ubuntu 10.04, dan menggunakan hal-hal pengawasan yang bagus di pemula (Saya tidak hanya berbicara tentang skrip init apache, tetapi juga pengawasan layanan yang tepat a la daemontools - artinya, memulai kembali apache ketika mati, hal-hal seperti itu).
Adakah yang memiliki konfigurasi pemula yang berjalan untuk mengawasi apache di ubuntu 10.04?
Google tidak membantu saya, tetapi bisa jadi google-fu saya lemah.
Jawaban:
Woooo!
Saya telah menulis versi saya sendiri yang cukup berfungsi - dengan beberapa peretasan file conf, dan menggunakan
-D NO_DETACH
.Pertama, saya harus set
User
,Group
danPidFile
di/etc/apache2/apache2.conf
manual, daripada memiliki mereka datang dari/etc/apache2/envvars
. Saya tidak dapat menemukan cara untuk membuat vars tersebut diekspor dengan benar (saya mencoba keduanyaenv
danexport
sesuai http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html , tetapi tidak bagus).Lalu, ini pekerjaan saya
/etc/init/apache2.conf
:Saya bisa melakukan
start|stop|status|reload apache2
dan mendapatkan hasil yang bermakna; jika sayakill -9
proses master apache, itu akan langsung direspawn, dan mulai dan berhenti saat boot seperti yang diharapkan. Jadi kurasa itu bekerja dengan cukup baik.Ada beberapa hal yang saya coba sehingga saya tidak bisa bekerja.
-D NO_DETACH
, bersama dengan:Itu gagal memulai layanan.
/etc/apache2/envvars
untuk mengisi${APACHE_*}
variabel:Itu gagal memulai, dan menghasilkan kesalahan tentang
apache2: bad user name ${APACHE_RUN_USER}
.Mencoba konsol keluaran dan opsi konsol standar; pada titik ini saya benar-benar hanya gagal untuk mencoba mendapatkan pesan kesalahan yang bermakna. Tampaknya tidak ada bedanya.
console output
Ini berguna untuk men-debug pesan apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Ini adalah upaya lain untuk tidak memodifikasi
/etc/apache2/apache2.conf
yang gagal:exec APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data APACHE_PID_FILE=/var/run/apache2.pid /usr/sbin/apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
sumber
Skrip ini bekerja untuk saya:
sumber
Saya juga mengalami masalah ini, namun saya menggunakan pendekatan lain. Cara termudah untuk mendapatkan variabel env adalah menggunakan perintah sumber dan mengarahkannya ke file apache envvars, maka Anda dapat menjalankan apache dengan opsi -D FOREGROUND
jadi pada dasarnya Anda memerlukan skrip yang terlihat seperti ini (milik saya ada di /etc/apache2/apache2_foreground.sh):
Kemudian Anda membuatnya dieksekusi dan mengarahkan pengawas ke lokasi, Anda juga perlu menggunakan tanda berhenti 6
Dua baris pertama dalam skrip menangkap ID grup proses skrip, dan mengatur jebakan yang berjalan pada sinyal yang diteruskan ke proses - jebakan ini mengeksekusi kill dengan ID proses negatif dari induk yang menjalankan semua proses apache2 (skrip sendiri) - membunuh dengan PID negatif berarti membunuh semua anak dari proses tersebut juga (jadi dalam hal ini semua proses apache2), tanpa itu saya tidak dapat membuat pengawas membunuh proses apache2
Stopignal 6 digunakan karena saya tidak dapat menangkap sinyal lain yang dapat memanggil perangkap, 9 tidak dapat ditangkap, dan 2 dan 3 tidak melakukan apa-apa (skrip tidak terbunuh)
setelah itu harus bekerja dengan lancar, tanpa modifikasi konfigurasi apache2 sama sekali
sumber
Beberapa posting dari Scott James Remnant tentang topik yang saya harap dapat membantu Anda:
sumber
Oh, ya, biasanya jawabannya adalah "tulis sendiri", jadi saran khas saya yang sesuai adalah untuk berkonsultasi dengan Memulai - halaman pemula dan ... ketik saja.
Saya berharap seseorang yang lebih berpengetahuan tentang masalah ini daripada saya membuat naskah pemula yang berfungsi.
sumber
Saya akan menggunakan pendekatan seperti pendekatan Ben Williams tetapi dengan
-D FOREGROUND
alih - alih-D NO_DETACH
.sumber