#!/bin/sh # event script to manage httpd in a cluster environment . $CTDB_BASE/functions detect_init_style case $CTDB_INIT_STYLE in redhat) service_name="httpd" service_config="http" ;; suse|debian|*) service_name="apache2" service_config="apache2" ;; esac # RHEL5 sometimes use a SIGKILL to terminate httpd, which then leaks # semaphores. This is a hack to clean them up. cleanup_httpd_semaphore_leak() { killall -q -0 "$service_name" || for i in $(ipcs -s | awk '$3 == "apache" { print $2 }') ; do ipcrm -s $i done } ########## service_start="cleanup_httpd_semaphore_leak; service $service_name start" service_stop="service $service_name stop; killall -q -9 $service_name || true" service_reconfigure="service $service_name restart" loadconfig ctdb_start_stop_service is_ctdb_managed_service || exit 0 case "$1" in startup) ctdb_service_start ;; shutdown) ctdb_service_stop ;; monitor) if ctdb_service_needs_reconfigure ; then ctdb_service_reconfigure exit 0 fi if ! ctdb_check_tcp_ports 80 ; then echo "HTTPD is not running. Trying to restart HTTPD." ctdb_service_start exit 1 fi ;; *) ctdb_standard_event_handler "$@" ;; esac exit 0