скрипт initstart-initised для Apache?

Я хочу запустить apache на Ubuntu 10.04 и использовать красивые надстройки в upstart (я говорю не только о скрипте инициализации apache, но и о надлежащем надзоре за обслуживанием a la daemontools, то есть перезапускать apache, когда он умирает, что-то вроде этого.)

У кого-нибудь есть работающая версия upstart для управления apache на ubuntu 10.04?

Googles не помогли мне, но может быть, что мой google-fu слаб.

15
задан 16 November 2010 в 10:07

66 ответов

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 26 May 2018 в 01:28
  • 1
    Одна вещь, о которой нужно помнить .. «начать с уровня запуска [2345]» может начаться до того, как настроены сетевые интерфейсы .. так что eth0 может быть «вверх», но он может быть не готов к использованию. Аналогично, у вас могут не быть локальных файловых систем. Вместо этого используется один стандарт, который используется (локальные файловые системы и net-device-up IFACE! = Lo). – SpamapS 17 November 2010 в 00:14
  • 2
    интересно! Машина, о которой идет речь, не была перезагружена на некоторое время, поэтому мне было бы интересно провести тест. Спасибо за совет. – Ben Williams 1 December 2010 в 04:24
  • 3
    Привет, отличный вопрос, еще лучший ответ :) Вы можете заставить envvars работать следующим образом: script. / etc / apache2 / envvars exec / usr / sbin / apache2 -D NO_DETACH end script – Martin Carpenter 5 February 2011 в 19:27

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 25 July 2018 в 23:16

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 27 July 2018 в 03:33

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 31 July 2018 в 10:41

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 31 July 2018 в 11:44

Woooo!

Я написал свою собственную версию, которая в значительной степени работает - с хакерами некоторых conf-файлов и с использованием -D NO_DETACH.

Сначала я должен был установите User, Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли из /etc/apache2/envvars. Я не мог разработать способ правильно экспортировать эти варны (я попробовал как 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, в сочетании с помощью: expect fork expect daemon

Не удалось запустить службу.

Пытался удалить -D NO_DETACH в сочетании с: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export 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
10
ответ дан 2 August 2018 в 04:32

Woooo!

Я написал свою собственную версию, которая очень много работает - с хакером некоторых conf-файлов и с использованием -D NO_DETACH .

Сначала мне пришлось установить User , Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли с / etc / apache2 / envvars . Я не мог найти способ правильно экспортировать эти варны (я попытался использовать 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 @@ # при запуске.  # Это нужно установить в / etc / apache2 / envvars # -PidFile $ {APACHE_PID_FILE} + PidFile /var/run/apache2.pid # # Время ожидания: количество секунд до приема и отправки тайм-аута.  @@ -142,8 +142,8 @@ & lt; / IfModule & gt;  # Они должны быть установлены в / etc / apache2 / envvars -User $ {APACHE_RUN_USER} -Group $ {APACHE_RUN_GROUP} + Пользователь www-data + Group www-data # # AccessFileName: имя файла для поиска в каждом каталоге   

Тогда это мой рабочий /etc/init/apache2.conf :

  # apache2 - http server # #  Apache - это веб-сервер, который отвечает на запросы HTTP и HTTPS.  # Обязательный-Пуск: $ local_fs $ remote_fs $ network $ syslog # Обязательный-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 не должен быть здесь, если мы только начинаем.  # (это плохо, если выполняется несколько экземпляров apache2) rm -f / var / run / apache2 / * ssl_scache * ||  true end script # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  

Я могу сделать start | stop | status | reload apache2 и получить значимые результаты; если я убьет -9 процесс мастер-апача, он сразу становится всплывающим, и он запускается и останавливается при загрузке, как и ожидалось.


Были вещи, которые я пытался, чтобы я не мог работать.

  • Пытался удалить -D NO_DETACH [ ! d14] в сочетании с:
 ожидать fork ожидать daemon 

Это не удалось запустить службу.

  • Пытался использовать аналогичный метод для / etc / apache2 / envvars для заполнения переменных $ {APACHE _ *} :
 export APACHE_RUN_USER = www-  экспорт данных APACHE_RUN_GROUP = www-data export APACHE_PID_FILE = / var / run / apache2.pid 

Это не удалось запустить и вызвало ошибку в apache2: неправильное имя пользователя $ {APACHE_RUN_USER} .

  • Пробовал выход консоли и настройки консоли по умолчанию; на данный момент я просто размахивал тем, что пытался получить содержательные сообщения об ошибках. Казалось, не имеет значения. консольный вывод
  • Это было полезно для отладки сообщений 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- данные APACHE_PID_FILE = / var / run / apache2.pid / usr / sbin / apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
10
ответ дан 4 August 2018 в 21:06

Woooo!

Я написал свою собственную версию, которая очень много работает - с хакером некоторых conf-файлов и с использованием -D NO_DETACH .

Сначала мне пришлось установить User , Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли с / etc / apache2 / envvars . Я не мог найти способ правильно экспортировать эти варны (я попытался использовать 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 @@ # при запуске.  # Это нужно установить в / etc / apache2 / envvars # -PidFile $ {APACHE_PID_FILE} + PidFile /var/run/apache2.pid # # Время ожидания: количество секунд до приема и отправки тайм-аута.  @@ -142,8 +142,8 @@ & lt; / IfModule & gt;  # Они должны быть установлены в / etc / apache2 / envvars -User $ {APACHE_RUN_USER} -Group $ {APACHE_RUN_GROUP} + Пользователь www-data + Group www-data # # AccessFileName: имя файла для поиска в каждом каталоге   

Тогда это мой рабочий /etc/init/apache2.conf :

  # apache2 - http server # #  Apache - это веб-сервер, который отвечает на запросы HTTP и HTTPS.  # Обязательный-Пуск: $ local_fs $ remote_fs $ network $ syslog # Обязательный-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 не должен быть здесь, если мы только начинаем.  # (это плохо, если выполняется несколько экземпляров apache2) rm -f / var / run / apache2 / * ssl_scache * ||  true end script # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  

Я могу сделать start | stop | status | reload apache2 и получить значимые результаты; если я убьет -9 процесс мастер-апача, он сразу становится всплывающим, и он запускается и останавливается при загрузке, как и ожидалось.


Были вещи, которые я пытался, чтобы я не мог работать.

  • Пытался удалить -D NO_DETACH [ ! d14] в сочетании с:
 ожидать fork ожидать daemon 

Это не удалось запустить службу.

  • Пытался использовать аналогичный метод для / etc / apache2 / envvars для заполнения переменных $ {APACHE _ *} :
 export APACHE_RUN_USER = www-  экспорт данных APACHE_RUN_GROUP = www-data export APACHE_PID_FILE = / var / run / apache2.pid 

Это не удалось запустить и вызвало ошибку в apache2: неправильное имя пользователя $ {APACHE_RUN_USER} .

  • Пробовал выход консоли и настройки консоли по умолчанию; на данный момент я просто размахивал тем, что пытался получить содержательные сообщения об ошибках. Казалось, не имеет значения. консольный вывод
  • Это было полезно для отладки сообщений 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- данные APACHE_PID_FILE = / var / run / apache2.pid / usr / sbin / apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
10
ответ дан 6 August 2018 в 04:36

Woooo!

Я написал свою собственную версию, которая очень много работает - с хакером некоторых conf-файлов и с использованием -D NO_DETACH .

Сначала мне пришлось установить User , Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли с / etc / apache2 / envvars . Я не мог найти способ правильно экспортировать эти варны (я попытался использовать 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 @@ # при запуске.  # Это нужно установить в / etc / apache2 / envvars # -PidFile $ {APACHE_PID_FILE} + PidFile /var/run/apache2.pid # # Время ожидания: количество секунд до приема и отправки тайм-аута.  @@ -142,8 +142,8 @@ & lt; / IfModule & gt;  # Они должны быть установлены в / etc / apache2 / envvars -User $ {APACHE_RUN_USER} -Group $ {APACHE_RUN_GROUP} + Пользователь www-data + Group www-data # # AccessFileName: имя файла для поиска в каждом каталоге   

Тогда это мой рабочий /etc/init/apache2.conf :

  # apache2 - http server # #  Apache - это веб-сервер, который отвечает на запросы HTTP и HTTPS.  # Обязательный-Пуск: $ local_fs $ remote_fs $ network $ syslog # Обязательный-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 не должен быть здесь, если мы только начинаем.  # (это плохо, если выполняется несколько экземпляров apache2) rm -f / var / run / apache2 / * ssl_scache * ||  true end script # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  

Я могу сделать start | stop | status | reload apache2 и получить значимые результаты; если я убьет -9 процесс мастер-апача, он сразу становится всплывающим, и он запускается и останавливается при загрузке, как и ожидалось.


Были вещи, которые я пытался, чтобы я не мог работать.

  • Пытался удалить -D NO_DETACH [ ! d14] в сочетании с:
 ожидать fork ожидать daemon 

Это не удалось запустить службу.

  • Пытался использовать аналогичный метод для / etc / apache2 / envvars для заполнения переменных $ {APACHE _ *} :
 export APACHE_RUN_USER = www-  экспорт данных APACHE_RUN_GROUP = www-data export APACHE_PID_FILE = / var / run / apache2.pid 

Это не удалось запустить и вызвало ошибку в apache2: неправильное имя пользователя $ {APACHE_RUN_USER} .

  • Пробовал выход консоли и настройки консоли по умолчанию; на данный момент я просто размахивал тем, что пытался получить содержательные сообщения об ошибках. Казалось, не имеет значения. консольный вывод
  • Это было полезно для отладки сообщений 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- данные APACHE_PID_FILE = / var / run / apache2.pid / usr / sbin / apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
10
ответ дан 7 August 2018 в 22:46

Woooo!

Я написал свою собственную версию, которая очень много работает - с хакером некоторых conf-файлов и с использованием -D NO_DETACH .

Сначала мне пришлось установить User , Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли с / etc / apache2 / envvars . Я не мог найти способ правильно экспортировать эти варны (я попытался использовать 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 @@ # при запуске.  # Это нужно установить в / etc / apache2 / envvars # -PidFile $ {APACHE_PID_FILE} + PidFile /var/run/apache2.pid # # Время ожидания: количество секунд до приема и отправки тайм-аута.  @@ -142,8 +142,8 @@ & lt; / IfModule & gt;  # Они должны быть установлены в / etc / apache2 / envvars -User $ {APACHE_RUN_USER} -Group $ {APACHE_RUN_GROUP} + Пользователь www-data + Group www-data # # AccessFileName: имя файла для поиска в каждом каталоге   

Тогда это мой рабочий /etc/init/apache2.conf :

  # apache2 - http server # #  Apache - это веб-сервер, который отвечает на запросы HTTP и HTTPS.  # Обязательный-Пуск: $ local_fs $ remote_fs $ network $ syslog # Обязательный-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 не должен быть здесь, если мы только начинаем.  # (это плохо, если выполняется несколько экземпляров apache2) rm -f / var / run / apache2 / * ssl_scache * ||  true end script # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  

Я могу сделать start | stop | status | reload apache2 и получить значимые результаты; если я убьет -9 процесс мастер-апача, он сразу становится всплывающим, и он запускается и останавливается при загрузке, как и ожидалось.


Были вещи, которые я пытался, чтобы я не мог работать.

  • Пытался удалить -D NO_DETACH [ ! d14] в сочетании с:
 ожидать fork ожидать daemon 

Это не удалось запустить службу.

  • Пытался использовать аналогичный метод для / etc / apache2 / envvars для заполнения переменных $ {APACHE _ *} :
 export APACHE_RUN_USER = www-  экспорт данных APACHE_RUN_GROUP = www-data export APACHE_PID_FILE = / var / run / apache2.pid 

Это не удалось запустить и вызвало ошибку в apache2: неправильное имя пользователя $ {APACHE_RUN_USER} .

  • Пробовал выход консоли и настройки консоли по умолчанию; на данный момент я просто размахивал тем, что пытался получить содержательные сообщения об ошибках. Казалось, не имеет значения. консольный вывод
  • Это было полезно для отладки сообщений 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- данные APACHE_PID_FILE = / var / run / apache2.pid / usr / sbin / apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
10
ответ дан 10 August 2018 в 10:52

Woooo!

Я написал свою собственную версию, которая очень много работает - с хакером некоторых conf-файлов и с использованием -D NO_DETACH .

Сначала мне пришлось установить User , Group и PidFile в /etc/apache2/apache2.conf вручную, а не чтобы они вошли с / etc / apache2 / envvars . Я не мог найти способ правильно экспортировать эти варны (я попытался использовать 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 @@ # при запуске.  # Это нужно установить в / etc / apache2 / envvars # -PidFile $ {APACHE_PID_FILE} + PidFile /var/run/apache2.pid # # Время ожидания: количество секунд до приема и отправки тайм-аута.  @@ -142,8 +142,8 @@ & lt; / IfModule & gt;  # Они должны быть установлены в / etc / apache2 / envvars -User $ {APACHE_RUN_USER} -Group $ {APACHE_RUN_GROUP} + Пользователь www-data + Group www-data # # AccessFileName: имя файла для поиска в каждом каталоге   

Тогда это мой рабочий /etc/init/apache2.conf :

  # apache2 - http server # #  Apache - это веб-сервер, который отвечает на запросы HTTP и HTTPS.  # Обязательный-Пуск: $ local_fs $ remote_fs $ network $ syslog # Обязательный-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 не должен быть здесь, если мы только начинаем.  # (это плохо, если выполняется несколько экземпляров apache2) rm -f / var / run / apache2 / * ssl_scache * ||  true end script # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  

Я могу сделать start | stop | status | reload apache2 и получить значимые результаты; если я убьет -9 процесс мастер-апача, он сразу становится всплывающим, и он запускается и останавливается при загрузке, как и ожидалось.


Были вещи, которые я пытался, чтобы я не мог работать.

  • Пытался удалить -D NO_DETACH [ ! d14] в сочетании с:
 ожидать fork ожидать daemon 

Это не удалось запустить службу.

  • Пытался использовать аналогичный метод для / etc / apache2 / envvars для заполнения переменных $ {APACHE _ *} :
 export APACHE_RUN_USER = www-  экспорт данных APACHE_RUN_GROUP = www-data export APACHE_PID_FILE = / var / run / apache2.pid 

Это не удалось запустить и вызвало ошибку в apache2: неправильное имя пользователя $ {APACHE_RUN_USER} .

  • Пробовал выход консоли и настройки консоли по умолчанию; на данный момент я просто размахивал тем, что пытался получить содержательные сообщения об ошибках. Казалось, не имеет значения. консольный вывод
  • Это было полезно для отладки сообщений 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- данные APACHE_PID_FILE = / var / run / apache2.pid / usr / sbin / apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
10
ответ дан 13 August 2018 в 17:27
  • 1
    Одна вещь, о которой нужно помнить .. «начать с уровня запуска [2345]» может начаться до того, как настроены сетевые интерфейсы .. так что eth0 может быть «вверх», но он может быть не готов к использованию. Аналогично, у вас могут не быть локальных файловых систем. Вместо этого используется один стандарт, который используется (локальные файловые системы и net-device-up IFACE! = Lo). – SpamapS 17 November 2010 в 00:14
  • 2
    интересно! Машина, о которой идет речь, не была перезагружена на некоторое время, поэтому мне было бы интересно провести тест. Спасибо за совет. – Ben Williams 1 December 2010 в 04:24
  • 3
    Привет, отличный вопрос, еще лучший ответ :) Вы можете заставить envvars работать следующим образом: script. / etc / apache2 / envvars exec / usr / sbin / apache2 -D NO_DETACH end script – Martin Carpenter 5 February 2011 в 19:27

Хорошо, этот скрипт работал для меня:

# 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

limit cpu 300 300
env APACHE_RUN_USER=www-data
env APACHE_RUN_GROUP=www-data
env APACHE_PID_FILE=/var/run/apache2.pid

# Give up if restart occurs 10 times in 30 seconds.
respawn limit 10 30

exec /usr/sbin/apache2 -D NO_DETACH
respawn
5
ответ дан 26 May 2018 в 01:28

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные env - использовать исходную команду и указать ее в файл envvars apache, тогда вы можете запустить apache с параметрами -D FOREGROUND

, так что в основном вам нужен скрипт, который выглядит так: (мой находится в /etc/apache2/apache2_foreground.sh):

#!/bin/bash

read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat
trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT


source /etc/httpd/envvars
apache2 -D FOREGROUND

Затем вы делаете его исполняемым и указываете супервизору на его местоположение, вам также необходимо использовать stopignal 6

[ f2]

Две первые строки в скрипте улавливают идентификатор группы процессов скрипта и устанавливают ловушку, которая выполняется на сигналах, переданных процессу - эта ловушка выполняет kill с отрицательным идентификатором процесса родителя, который запускает все apache2 (сам скрипт) - убийство с отрицательным PID означает убить всех дочерних элементов такого процесса (так что в этом случае все процессы apache2), без этого я не смог заставить супервизора убить процессы apache2 [!d3 ]

Стоп-сигнал 6 используется, поскольку я не мог резать любой другой сигнал, который мог бы вызвать ловушку, 9 не может быть пойман, а 2 a nd 3 ничего не делают (сценарий не убит)

после этого он должен работать плавно, без каких-либо изменений в конфигурации apache2

3
ответ дан 26 May 2018 в 01:28

Несколько сообщений от Скотта Джеймса Remnant по теме, которая, я надеюсь, может вам помочь:

Наблюдение за процессами вилки (некоторый код) Как (и почему) Наблюдать за процессами вилки (запись в блоге) [!d1 ]
2
ответ дан 26 May 2018 в 01:28
  • 1
    Хорошо, поэтому они заходят в некоторые истории о выскочке, наблюдая за демонами и некоторыми подробностями. Он по-прежнему не является сценарием для apache с надстройкой, и в документации по выходу более подробно. Я подозреваю, что окончательный ответ на это будет «напишите сами». – Ben Williams 31 August 2010 в 17:41

О, да, обычно ответ будет «написать свой собственный», поэтому моим соответствующим типичным предложением было бы проконсультироваться с страницей «Начало работы» - upstart и ... введите.

Надеюсь, что кто-то более осведомлен по этой проблеме, чем у меня, появляется рабочий скрипт.

0
ответ дан 26 May 2018 в 01:28

Я использовал бы подход, похожий на Ben Williams, но с -D FOREGROUND вместо -D NO_DETACH.

0
ответ дан 26 May 2018 в 01:28

Несколько сообщений от Скотта Джеймса Remnant по теме, которая, я надеюсь, может вам помочь:

Наблюдение за процессами вилки (некоторый код) Как (и почему) Наблюдать за процессами вилки (запись в блоге)
2
ответ дан 25 July 2018 в 23:16
  • 1
    Хорошо, поэтому они заходят в некоторые истории о выскочке, наблюдая за демонами и некоторыми подробностями. Он по-прежнему не является сценарием для apache с надстройкой, и в документации по выходу более подробно. Я подозреваю, что окончательный ответ на это будет «напишите сами». – Ben Williams 31 August 2010 в 17:41

Я использовал бы подход, похожий на Ben Williams, но с -D FOREGROUND вместо -D NO_DETACH.

0
ответ дан 25 July 2018 в 23:16

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные env - использовать исходную команду и указать ее в файл envvars apache, тогда вы можете запустить apache с параметрами -D FOREGROUND

, так что в основном вам нужен скрипт, который выглядит так: (мой находится в /etc/apache2/apache2_foreground.sh):

#!/bin/bash read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT source /etc/httpd/envvars apache2 -D FOREGROUND

Затем вы делаете его исполняемым и указываете супервизору на его местоположение, вам также необходимо использовать stopignal 6

command=/etc/apache2/apache2_foreground.sh stopsignal=6

Две первые строки в скрипте улавливают идентификатор группы процессов скрипта и устанавливают ловушку, которая выполняется на сигналах, переданных процессу - эта ловушка выполняет kill с отрицательным идентификатором процесса родителя, который запускает все apache2 (сам скрипт) - убийство с отрицательным PID означает убить всех дочерних элементов такого процесса (так что в этом случае все процессы apache2), без этого я не смог заставить супервизора убить процессы apache2

Стоп-сигнал 6 используется, поскольку я не мог резать любой другой сигнал, который мог бы вызвать ловушку, 9 не может быть пойман, а 2 a nd 3 ничего не делают (сценарий не убит)

после этого он должен работать плавно, без каких-либо изменений в конфигурации apache2

3
ответ дан 25 July 2018 в 23:16

Хорошо, этот скрипт работал для меня:

# 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 limit cpu 300 300 env APACHE_RUN_USER=www-data env APACHE_RUN_GROUP=www-data env APACHE_PID_FILE=/var/run/apache2.pid # Give up if restart occurs 10 times in 30 seconds. respawn limit 10 30 exec /usr/sbin/apache2 -D NO_DETACH respawn
5
ответ дан 25 July 2018 в 23:16

О, да, обычно ответ будет «написать свой собственный», поэтому моим соответствующим типичным предложением было бы проконсультироваться с страницей «Начало работы» - upstart и ... введите.

Надеюсь, что кто-то более осведомлен по этой проблеме, чем у меня, появляется рабочий скрипт.

0
ответ дан 25 July 2018 в 23:16

Несколько сообщений от Скотта Джеймса Remnant по теме, которая, я надеюсь, может вам помочь:

Наблюдение за процессами вилки (некоторый код) Как (и почему) Наблюдать за процессами вилки (запись в блоге)
2
ответ дан 27 July 2018 в 03:33
  • 1
    Хорошо, поэтому они заходят в некоторые истории о выскочке, наблюдая за демонами и некоторыми подробностями. Он по-прежнему не является сценарием для apache с надстройкой, и в документации по выходу более подробно. Я подозреваю, что окончательный ответ на это будет «напишите сами». – Ben Williams 31 August 2010 в 17:41

Я использовал бы подход, похожий на Ben Williams, но с -D FOREGROUND вместо -D NO_DETACH.

0
ответ дан 27 July 2018 в 03:33

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные env - использовать исходную команду и указать ее в файл envvars apache, тогда вы можете запустить apache с параметрами -D FOREGROUND

, так что в основном вам нужен скрипт, который выглядит так: (мой находится в /etc/apache2/apache2_foreground.sh):

#!/bin/bash read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT source /etc/httpd/envvars apache2 -D FOREGROUND

Затем вы делаете его исполняемым и указываете супервизору на его местоположение, вам также необходимо использовать stopignal 6

command=/etc/apache2/apache2_foreground.sh stopsignal=6

Две первые строки в скрипте улавливают идентификатор группы процессов скрипта и устанавливают ловушку, которая выполняется на сигналах, переданных процессу - эта ловушка выполняет kill с отрицательным идентификатором процесса родителя, который запускает все apache2 (сам скрипт) - убийство с отрицательным PID означает убить всех дочерних элементов такого процесса (так что в этом случае все процессы apache2), без этого я не смог заставить супервизора убить процессы apache2

Стоп-сигнал 6 используется, поскольку я не мог резать любой другой сигнал, который мог бы вызвать ловушку, 9 не может быть пойман, а 2 a nd 3 ничего не делают (сценарий не убит)

после этого он должен работать плавно, без каких-либо изменений в конфигурации apache2

3
ответ дан 27 July 2018 в 03:33

Хорошо, этот скрипт работал для меня:

# 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 limit cpu 300 300 env APACHE_RUN_USER=www-data env APACHE_RUN_GROUP=www-data env APACHE_PID_FILE=/var/run/apache2.pid # Give up if restart occurs 10 times in 30 seconds. respawn limit 10 30 exec /usr/sbin/apache2 -D NO_DETACH respawn
5
ответ дан 27 July 2018 в 03:33

О, да, обычно ответ будет «написать свой собственный», поэтому моим соответствующим типичным предложением было бы проконсультироваться с страницей «Начало работы» - upstart и ... введите.

Надеюсь, что кто-то более осведомлен по этой проблеме, чем у меня, появляется рабочий скрипт.

0
ответ дан 27 July 2018 в 03:33

Несколько сообщений от Скотта Джеймса Remnant по теме, которая, я надеюсь, может вам помочь:

Наблюдение за процессами вилки (некоторый код) Как (и почему) Наблюдать за процессами вилки (запись в блоге)
2
ответ дан 31 July 2018 в 10:41
  • 1
    Хорошо, поэтому они заходят в некоторые истории о выскочке, наблюдая за демонами и некоторыми подробностями. Он по-прежнему не является сценарием для apache с надстройкой, и в документации по выходу более подробно. Я подозреваю, что окончательный ответ на это будет «напишите сами». – Ben Williams 31 August 2010 в 17:41

Я использовал бы подход, похожий на Ben Williams, но с -D FOREGROUND вместо -D NO_DETACH.

0
ответ дан 31 July 2018 в 10:41

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные env - использовать исходную команду и указать ее в файл envvars apache, тогда вы можете запустить apache с параметрами -D FOREGROUND

, так что в основном вам нужен скрипт, который выглядит так: (мой находится в /etc/apache2/apache2_foreground.sh):

#!/bin/bash read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT source /etc/httpd/envvars apache2 -D FOREGROUND

Затем вы делаете его исполняемым и указываете супервизору на его местоположение, вам также необходимо использовать stopignal 6

command=/etc/apache2/apache2_foreground.sh stopsignal=6

Две первые строки в скрипте улавливают идентификатор группы процессов скрипта и устанавливают ловушку, которая выполняется на сигналах, переданных процессу - эта ловушка выполняет kill с отрицательным идентификатором процесса родителя, который запускает все apache2 (сам скрипт) - убийство с отрицательным PID означает убить всех дочерних элементов такого процесса (так что в этом случае все процессы apache2), без этого я не смог заставить супервизора убить процессы apache2

Стоп-сигнал 6 используется, поскольку я не мог резать любой другой сигнал, который мог бы вызвать ловушку, 9 не может быть пойман, а 2 a nd 3 ничего не делают (сценарий не убит)

после этого он должен работать плавно, без каких-либо изменений в конфигурации apache2

3
ответ дан 31 July 2018 в 10:41

Хорошо, этот скрипт работал для меня:

# 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 limit cpu 300 300 env APACHE_RUN_USER=www-data env APACHE_RUN_GROUP=www-data env APACHE_PID_FILE=/var/run/apache2.pid # Give up if restart occurs 10 times in 30 seconds. respawn limit 10 30 exec /usr/sbin/apache2 -D NO_DETACH respawn
5
ответ дан 31 July 2018 в 10:41

Другие вопросы по тегам:

Похожие вопросы: