скрипт 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 ответов

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

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

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

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

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

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

0
ответ дан 31 July 2018 в 11:44

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные 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 в 11:44

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

# 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 в 11:44

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

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

0
ответ дан 31 July 2018 в 11:44

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

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

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

0
ответ дан 2 August 2018 в 04:32

Я также столкнулся с этой проблемой, однако использовал другой подход. Самый простой способ получить переменные 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
ответ дан 2 August 2018 в 04:32

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

# 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
ответ дан 2 August 2018 в 04:32

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

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

0
ответ дан 2 August 2018 в 04:32

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

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

0
ответ дан 4 August 2018 в 21:06

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

  # 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 limit cpu 300 300 env APACHE_RUN_USER = www-data env APACHE_RUN_GROUP = www-data env APACHE_PID_FILE = / var / run / apache2.pid # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  
5
ответ дан 4 August 2018 в 21:06

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

0
ответ дан 4 August 2018 в 21:06

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

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

  #! / bin / bash read pid cmd state ppid pgrp session tty_nr tpgid rest & lt;  / proc / self / stat trap "kill -TERM - $ pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT источник / etc / httpd / envvars apache2 -D FOREGROUND  

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

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

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

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

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

3
ответ дан 4 August 2018 в 21:06

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

2
ответ дан 4 August 2018 в 21:06

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

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

0
ответ дан 6 August 2018 в 04:36

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

2
ответ дан 6 August 2018 в 04:36

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

0
ответ дан 6 August 2018 в 04:36

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

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

  #! / bin / bash read pid cmd state ppid pgrp session tty_nr tpgid rest & lt;  / proc / self / stat trap "kill -TERM - $ pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT источник / etc / httpd / envvars apache2 -D FOREGROUND  

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

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

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

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

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

3
ответ дан 6 August 2018 в 04:36

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

  # 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 limit cpu 300 300 env APACHE_RUN_USER = www-data env APACHE_RUN_GROUP = www-data env APACHE_PID_FILE = / var / run / apache2.pid # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  
5
ответ дан 6 August 2018 в 04:36

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

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

0
ответ дан 7 August 2018 в 22:46

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

  # 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 limit cpu 300 300 env APACHE_RUN_USER = www-data env APACHE_RUN_GROUP = www-data env APACHE_PID_FILE = / var / run / apache2.pid # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  
5
ответ дан 7 August 2018 в 22:46

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

2
ответ дан 7 August 2018 в 22:46

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

0
ответ дан 7 August 2018 в 22:46

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

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

  #! / bin / bash read pid cmd state ppid pgrp session tty_nr tpgid rest & lt;  / proc / self / stat trap "kill -TERM - $ pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT источник / etc / httpd / envvars apache2 -D FOREGROUND  

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

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

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

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

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

3
ответ дан 7 August 2018 в 22:46

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

0
ответ дан 10 August 2018 в 10:52

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

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

  #! / bin / bash read pid cmd state ppid pgrp session tty_nr tpgid rest & lt;  / proc / self / stat trap "kill -TERM - $ pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT источник / etc / httpd / envvars apache2 -D FOREGROUND  

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

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

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

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

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

3
ответ дан 10 August 2018 в 10:52

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

  # 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 limit cpu 300 300 env APACHE_RUN_USER = www-data env APACHE_RUN_GROUP = www-data env APACHE_PID_FILE = / var / run / apache2.pid # Откажитесь, если перезапуск происходит 10 раз за 30 секунд.  respawn limit 10 30 exec / usr / sbin / apache2 -D NO_DETACH respawn  
5
ответ дан 10 August 2018 в 10:52

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

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

0
ответ дан 10 August 2018 в 10:52

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

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