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
dan PidFile
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 keduanya env
dan export
sesuai http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html , tetapi tidak bagus).
root@lucid:/etc/apache2# diff -u apache2.conf.orig apache2.conf
--- apache2.conf.orig 2010-09-20 13:46:33.857868534 +0930
+++ apache2.conf 2010-09-20 13:47:22.377842204 +0930
@@ -63,7 +63,7 @@
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
-PidFile ${APACHE_PID_FILE}
+PidFile /var/run/apache2.pid
#
# Timeout: The number of seconds before receives and sends time out.
@@ -142,8 +142,8 @@
</IfModule>
# These need to be set in /etc/apache2/envvars
-User ${APACHE_RUN_USER}
-Group ${APACHE_RUN_GROUP}
+User www-data
+Group www-data
#
# AccessFileName: The name of the file to look for in each directory
Lalu, ini pekerjaan saya /etc/init/apache2.conf
:
# apache2 - http server
#
# Apache is a web server that responds to HTTP and HTTPS requests.
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
description "apache2 http server"
start on runlevel [2345]
stop on runlevel [!2345]
pre-start script
mkdir -p /var/run/apache2 || true
install -d -o www-data /var/lock/apache2 || true
# ssl_scache shouldn't be here if we're just starting up.
# (this is bad if there are several apache2 instances running)
rm -f /var/run/apache2/*ssl_scache* || true
end script
# Give up if restart occurs 10 times in 30 seconds.
respawn limit 10 30
exec /usr/sbin/apache2 -D NO_DETACH
respawn
Saya bisa melakukan start|stop|status|reload apache2
dan mendapatkan hasil yang bermakna; jika saya kill -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.
- Mencoba menghapus
-D NO_DETACH
, bersama dengan:
berharap garpu
harapkan daemon
Itu gagal memulai layanan.
- Mencoba menggunakan metode serupa
/etc/apache2/envvars
untuk mengisi ${APACHE_*}
variabel:
ekspor APACHE_RUN_USER = www-data
ekspor APACHE_RUN_GROUP = www-data
ekspor APACHE_PID_FILE = / var / run / apache2.pid
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