Woooo!
ผมเคยเขียนรุ่นของตัวเองที่มีการทำงานที่สวยมาก - มีบางส่วนแฮ็คไฟล์ conf -D NO_DETACH
และการใช้
ขึ้นครั้งแรกที่ฉันได้ไปชุดUser
, Group
และPidFile
ในตนเองมากกว่าที่จะมีพวกเขามาจาก/etc/apache2/apache2.conf
/etc/apache2/envvars
ฉันไม่สามารถหาวิธีที่จะทำให้ vars เหล่านั้นส่งออกอย่างถูกต้อง (ฉันลองทั้งสองอย่างenv
และexport
ตามhttp://manpages.ubuntu.com/manpages/lucid/man5/init.5.htmlแต่ไม่ดี)
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
นี่คือการทำงานของฉัน/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
ฉันสามารถทำได้start|stop|status|reload apache2
และรับผลลัพธ์ที่มีความหมาย ถ้าฉันkill -9
เป็นกระบวนการอาปาเช่หลักมันก็จะเกิดใหม่ทันทีและมันก็จะเริ่มและหยุดเมื่อบู๊ตตามที่คาดไว้ ดังนั้นฉันจึงคิดว่าทำงานได้ดีพอสมควร
มีบางสิ่งที่ฉันพยายามที่จะไม่สามารถทำงานได้
- พยายามลบ
-D NO_DETACH
พร้อมกับ:
คาดหวังส้อม
คาดหวังภูต
ที่ล้มเหลวในการเริ่มบริการ
- พยายามใช้วิธีที่คล้ายกัน
/etc/apache2/envvars
เพื่อเติม${APACHE_*}
ตัวแปร:
ส่งออก APACHE_RUN_USER = www-data
ส่งออก APACHE_RUN_GROUP = www-data
ส่งออก APACHE_PID_FILE = / var / run / apache2.pid
apache2: bad user name ${APACHE_RUN_USER}
ที่ล้มเหลวในการเริ่มต้นและผลิตข้อผิดพลาดเกี่ยวกับ
พยายามเอาต์พุตคอนโซลและตัวเลือกดีฟอลต์ของคอนโซล; ณ จุดนี้ฉันรู้สึกสับสนเมื่อพยายามรับข้อความแสดงข้อผิดพลาดที่มีความหมาย ดูเหมือนว่าจะสร้างความแตกต่าง
console output
สิ่งนี้มีประโยชน์สำหรับการดีบักข้อความ apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
นี่เป็นความพยายามอีกครั้งที่จะไม่แก้ไข/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