Назад | Перейти на главную страницу

supervise / daemontools конфликтует с apache -D FOREGROUND

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

У нас есть куча сервисов daemontools в / etc / service /. Одна из служб управляет apache, и это есть в сценарии запуска.

exec envdir /var/lib/supervise/wwwproxy/env setuidgid root bash <<-BASH
    ulimit -n 8192  # also increase the running user's file descriptor limit
    exec apache2 -f /path/to/demo_apache2.conf -D FOREGROUND
BASH 

У нас была проблема, что svc -d /etc/service/* на самом деле это привело к перезапуску всех служб, но не к их отключению. Наконец, мы отследили его до этой службы и обнаружили, что svc -d /etc/service/apache2 принесет вверх любая другая служба была отключена, в том числе она сама.

Изменение FOREGROUND на NO_DAEMONIZE исправляет поведение, но мы действительно хотели бы понять, что происходит. Кто-нибудь может объяснить, почему svc -d на один услуга принесет Другой обслуживание вверх?

Спасибо за любую подсказку, которую вы можете предложить.

Для меня -D NO_DAEMONIZE не сработало, пришлось использовать -D NO_DETACH. (CentOS 6.3, Apache / 2.2.15)

Смотрите также http://httpd.apache.org/docs/2.2/programs/httpd.html:

Также может использоваться для установки некоторых менее распространенных параметров запуска, включая -DNO_DETACH (предотвращение разветвления родительского элемента) и -DFOREGROUND (предотвращение вызова родительским элементом setsid () и др.).

Мое предложение было бы не использовать daemontools для запуска Apache, но вместо этого вам следует упростить сценарий выполнения.

Начнем с минимума:

#!/bin/bash
exec apache2 -f /path/to/httpd.conf -D NO_DAEMONIZE

Если вам нужно / вы хотите использовать envdir вы можете запустить apache с этим вместо exec.
В ulimit call, вероятно, не является необходимым, но может быть добавлен в любом месте сценария выполнения перед запуском Apache.


Re: действительно странное поведение, которое вы видите, там являются некоторые функциональные различия между -DFOREGROUND и -DNO_DAEMONIZE - последнее - это то, что я всегда видел рекомендованным для запуска Apache под daemontools (которому предшествует обязательное «Не делайте этого») - я не знаю, почему любое из этих различий может вызвать описанное вами поведение.