У меня есть несколько серверов debian 8 с конфигурацией по умолчанию.
У них есть apache2, и я хочу добавить monit ( https://mmonit.com/monit/ ) для дополнительной доступности.
Чтобы управлять остановками и запусками apache, управляемыми оператором, я хотел бы добавить monit монитор и неконтролирующий действия с модулем apache systemd. Я подумал о том, чтобы отправить этот добавляемый файл в конфигурацию systemd apache (/etc/systemd/system/apache2.service.d/ папка):
[Service]
ExecStartPost=-/usr/bin/monit monitor apache2
ExecStop=-/usr/bin/monit unmonitor apache2
Команда ExecStartPost отлично работает.
К сожалению, у меня есть некоторые проблемы с командой ExecStop, потому что она выполняется после фактической остановки службы.
Я понял, что есть еще один ExecStop, определенный в /run/systemd/generator.late/apache2.service (файл, автоматически сгенерированный systemd-sysv-generator). Конечно, в наличии нескольких команд ExecStop проблем нет, проблема здесь в порядке:
root@debianjessie:~# systemctl show apache2 | grep ^ExecStop
ExecStop={ path=/etc/init.d/apache2 ; argv[]=/etc/init.d/apache2 stop ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
ExecStop={ path=/usr/bin/monit ; argv[]=/usr/bin/monit unmonitor apache2 ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
Я нашел обходной путь, переопределяющий всю последовательность ExecStop в моем всплывающем файле:
[Service]
ExecStartPost=-/usr/bin/monit monitor apache2
ExecStop=
ExecStop=-/usr/bin/monit unmonitor apache2
ExecStop=/etc/init.d/apache2 stop
но я думаю, что это не очень "чистое" решение на мой взгляд.
Чтение Вот дроп-ин /и т.д/ должны быть те, которые имеют наивысший приоритет, поэтому я не понимаю, почему мое действие ExecStop выполняется последним.
Я что-нибудь упускаю?
Заранее спасибо. С.
Почему бы не повернуть его (без изменения каких-либо модулей systemd!), Используя monit для запуска / остановки вашего apache?
Если вы используете /bin/systemctl start apache2.service
так как start program
в monitrc
и то же самое для stop
, вы можете просто использовать monit с monit stop apache
сделать это "все включено";)