Woooo!
Ich habe meine eigene Version geschrieben, die ziemlich gut funktioniert - mit einigem Hacken und Verwenden von conf-Dateien -D NO_DETACH
.
Als erstes musste ich Satz User
, Group
und PidFile
in /etc/apache2/apache2.conf
manuell, statt sie kommen aus /etc/apache2/envvars
. Ich konnte keine Möglichkeit finden, diese Vars ordnungsgemäß zu exportieren (ich habe beides versucht env
und es export
gemäß http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html versucht , aber nichts Gutes).
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
Dann ist das meine Arbeit /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
Ich kann start|stop|status|reload apache2
bedeutungsvolle Ergebnisse erzielen; Wenn ich kill -9
den Master-Apache-Prozess durchführe, wird er ziemlich sofort neu erzeugt und startet und stoppt beim Booten wie erwartet. Es funktioniert also ziemlich gut, denke ich.
Es gab Dinge, die ich versucht habe und die ich nicht zum Arbeiten bringen konnte.
- Versucht zu entfernen
-D NO_DETACH
, in Verbindung mit:
Gabel erwarten
Erwarten Sie Daemon
Der Dienst konnte nicht gestartet werden.
- Es wurde versucht, eine ähnliche Methode
/etc/apache2/envvars
zum Auffüllen der ${APACHE_*}
Variablen zu verwenden:
exportiere APACHE_RUN_USER = www-Daten
exportiere APACHE_RUN_GROUP = www-Daten
Exportieren Sie APACHE_PID_FILE = / var / run / apache2.pid
Das konnte nicht gestartet werden und verursachte einen Fehler apache2: bad user name ${APACHE_RUN_USER}
.
Versuchte Konsolenausgabe und Konsolenstandardoptionen; Zu diesem Zeitpunkt habe ich wirklich nur versucht, aussagekräftige Fehlermeldungen zu erhalten. Es schien keinen Unterschied zu machen.
console output
Dies war nützlich zum Debuggen von Apache-Nachrichten:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Dies war ein weiterer Versuch, dies nicht zu ändern /etc/apache2/apache2.conf
:
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