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