69 lines
2.5 KiB
Plaintext
69 lines
2.5 KiB
Plaintext
|
# flag pattern: %%{apache_restart_flag} restart all
|
||
|
# %%{apache_restart_flag}@ restart apache2.service
|
||
|
# %%{apache_restarT_flag}@<name> restart apache2@<name>.service
|
||
|
%apache_restart_flag /var/run/httpd.restart.flag
|
||
|
|
||
|
#
|
||
|
# macro: apache_module_request_restart -- request restart of the apache
|
||
|
# instance(s) after rpm or zypper transaction
|
||
|
#
|
||
|
# usage: apache_request_restart [-m module]
|
||
|
#
|
||
|
# module: restart every instance for which a2enmod -q <module> is true; if
|
||
|
# no module specified, request restart of all instances
|
||
|
#
|
||
|
%apache_request_restart(m:) \
|
||
|
if [ -x /usr/bin/systemctl ]; then \
|
||
|
MODULE=%{-m:%{-m*}} \
|
||
|
if [ -z "$MODULE" ]; then \
|
||
|
# restart all instances \
|
||
|
touch %{apache_restart_flag} \
|
||
|
echo 'Requesting apache restart (all instances)' \
|
||
|
else \
|
||
|
running_units=$(systemctl list-units | grep 'apache2\\(@.*\\)\\?.service' | sed 's:\\(\\.service\\).*:\\1:') \
|
||
|
for unit in $running_units; do \
|
||
|
instance_name=$(echo $unit | sed 's:apache2@\\?\\(.*\\).service:\\1:') \
|
||
|
if HTTPD_INSTANCE="$instance_name" a2enmod -q $MODULE; then \
|
||
|
# restart only specified instance, %%{apache_restart_flag}@ \
|
||
|
# means _only_ apache2.service \
|
||
|
echo "$instance_name" > %{apache_restart_flag}@$instance_name \
|
||
|
echo "Requesting apache restart ($instance_name instance)" \
|
||
|
fi \
|
||
|
done \
|
||
|
fi \
|
||
|
fi \
|
||
|
%nil
|
||
|
#
|
||
|
# macro: apache_module_restart_if_needed
|
||
|
#
|
||
|
#
|
||
|
%apache_restart_if_needed() \
|
||
|
if [ -x /usr/bin/systemctl ]; then \
|
||
|
if [ -e %{apache_restart_flag} ]; then \
|
||
|
/usr/bin/systemctl daemon-reload > /dev/null 2>&1 || : \
|
||
|
/usr/bin/systemctl restart apache2.target > /dev/null 2>&1 || : \
|
||
|
echo 'Restarting apache (all instances)' \
|
||
|
# all instances was restarted, removing all flags \
|
||
|
rm %{apache_restart_flag}* \
|
||
|
else \
|
||
|
/usr/bin/systemctl daemon-reload > /dev/null 2>&1 || : \
|
||
|
for flag in %{apache_restart_flag}@*; do \
|
||
|
if [ ! -e $flag ]; then \
|
||
|
# %%{apache_restart_flag}@* have not matched anything \
|
||
|
break \
|
||
|
fi \
|
||
|
instance_name=$(cat $flag) \
|
||
|
if [ -z "$instance_name" ]; then \
|
||
|
instance_suffix="" \
|
||
|
else \
|
||
|
instance_suffix="@$instance_name" \
|
||
|
fi \
|
||
|
echo "Restarting apache ($instance_name instance)" \
|
||
|
/usr/bin/systemctl restart apache2${instance_suffix}.service > /dev/null 2>&1 || : \
|
||
|
rm %{apache_restart_flag}@$instance_name \
|
||
|
done \
|
||
|
fi \
|
||
|
fi \
|
||
|
%nil
|
||
|
|