Woooo!
Tôi đã viết phiên bản của riêng tôi hoạt động khá nhiều - với một số hack tập tin conf và sử dụng -D NO_DETACH
.
Đầu tiên, tôi đã phải thiết lập User
, Group
và PidFile
trong /etc/apache2/apache2.conf
tay, chứ không phải là có họ đến từ /etc/apache2/envvars
. Tôi không thể tìm ra cách để các vars đó được xuất đúng cách (tôi đã thử cả hai env
và export
theo http://manpages.ub Ubuntu.com/manpages/lucid/man5/init.5.html , nhưng không tốt).
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
Sau đó, đây là công việc của tôi /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
Tôi có thể làm start|stop|status|reload apache2
và nhận được kết quả có ý nghĩa; Nếu tôi kill -9
xử lý apache chính, nó sẽ được xử lý ngay lập tức và nó khởi động và dừng khi khởi động như mong đợi. Vì vậy, nó hoạt động hợp lý tốt, tôi nghĩ.
Có những điều tôi đã cố gắng mà tôi không thể làm việc.
- Đã cố gắng để loại bỏ
-D NO_DETACH
, kết hợp với:
mong đợi ngã ba
daemon mong đợi
Điều đó không thể bắt đầu dịch vụ.
- Đã thử sử dụng một phương thức tương tự
/etc/apache2/envvars
để điền vào các ${APACHE_*}
biến:
xuất APACHE_RUN_USER = www-data
xuất APACHE_RUN_GROUP = www-data
xuất APACHE_PID_FILE = / var / run / apache2.pid
Điều đó không bắt đầu, và tạo ra một lỗi về apache2: bad user name ${APACHE_RUN_USER}
.
Đã thử đầu ra giao diện điều khiển và các tùy chọn mặc định của bàn điều khiển; tại thời điểm này tôi thực sự chỉ lo lắng về việc cố gắng để có được thông báo lỗi có ý nghĩa. Dường như không có sự khác biệt.
console output
Điều này rất hữu ích để gỡ lỗi tin nhắn apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Đây là một nỗ lực khác để không sửa đổi /etc/apache2/apache2.conf
mà thất bại:
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