Created
July 1, 2009 21:13
-
-
Save joewilliams/139064 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: haproxy | |
# Required-Start: $local_fs $network | |
# Required-Stop: $local_fs | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: fast and reliable load balancing reverse proxy | |
# Description: This file should be used to start and stop haproxy. | |
### END INIT INFO | |
# Author: Arnaud Cornet <[email protected]> | |
# Extended by: Holger Just <h.just _at_ finn.de> | |
# Modified by Joe Williams <[email protected]> | |
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin | |
PIDFILE=/var/run/haproxy.pid | |
CONFIG_FILE=haproxy.cfg | |
CONFIG_DIR=/etc/haproxy | |
CONFIG=$CONFIG_DIR/$CONFIG_FILE | |
CONFIG_DIR=/etc/haproxy | |
HAPROXY=/usr/local/sbin/haproxy | |
HAPROXY_JOIN=/usr/bin/haproxy_join | |
EXTRAOPTS= | |
test -x $HAPROXY || exit 0 | |
test -f "$CONFIG" || exit 0 | |
if [ -e /etc/default/haproxy ]; then | |
. /etc/default/haproxy | |
fi | |
test "$ENABLED" != "0" || exit 0 | |
[ -f /etc/default/rcS ] && . /etc/default/rcS | |
. /lib/lsb/init-functions | |
haproxy_start() | |
{ | |
haproxy_create_config || return 5 | |
start-stop-daemon --start --pidfile "$PIDFILE" \ | |
--exec $HAPROXY -- -f "$CONFIG" -D -p "$PIDFILE" \ | |
$EXTRAOPTS || return 2 | |
return 0 | |
} | |
haproxy_stop() | |
{ | |
if [ ! -f $PIDFILE ] ; then | |
# This is a success according to LSB | |
return 0 | |
fi | |
for pid in $(cat $PIDFILE) ; do | |
/bin/kill $pid || return 4 | |
done | |
rm -f $PIDFILE | |
return 0 | |
} | |
haproxy_create_config() | |
{ | |
$HAPROXY_JOIN "$CONFIG_FILE" "$CONFIG_DIR" || return 5 | |
return 0 | |
} | |
haproxy_reload() | |
{ | |
haproxy_create_config || return 5 | |
$HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \ | |
|| return 2 | |
return 0 | |
} | |
haproxy_status() | |
{ | |
if [ ! -f $PIDFILE ] ; then | |
# program not running | |
return 3 | |
fi | |
for pid in $(cat $PIDFILE) ; do | |
if ! ps --no-headers p "$pid" | grep haproxy > /dev/null ; then | |
# program running, bogus pidfile | |
return 1 | |
fi | |
done | |
return 0 | |
} | |
haproxy_check() | |
{ | |
return `$HAPROXY -f "$CONFIG" -c` | |
} | |
case "$1" in | |
start) | |
log_daemon_msg "Starting haproxy" "haproxy" | |
haproxy_start | |
ret=$? | |
case "$ret" in | |
0) | |
log_end_msg 0 | |
;; | |
1) | |
log_end_msg 1 | |
echo "pid file '$PIDFILE' found, haproxy not started." | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
exit $ret | |
;; | |
stop) | |
log_daemon_msg "Stopping haproxy" "haproxy" | |
haproxy_stop | |
ret=$? | |
case "$ret" in | |
0|1) | |
log_end_msg 0 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
exit $ret | |
;; | |
reload|force-reload) | |
log_daemon_msg "Reloading haproxy" "haproxy" | |
haproxy_reload | |
case "$?" in | |
0|1) | |
log_end_msg 0 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
restart) | |
log_daemon_msg "Restarting haproxy" "haproxy" | |
haproxy_stop | |
haproxy_start | |
case "$?" in | |
0) | |
log_end_msg 0 | |
;; | |
1) | |
log_end_msg 1 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
status) | |
haproxy_status | |
ret=$? | |
case "$ret" in | |
0) | |
echo "haproxy is running." | |
;; | |
1) | |
echo "haproxy dead, but $PIDFILE exists." | |
;; | |
*) | |
echo "haproxy not running." | |
;; | |
esac | |
exit $ret | |
;; | |
check) | |
haproxy_check | |
ret=$? | |
case "$ret" in | |
0) | |
echo "haproxy configuration is ok." | |
;; | |
*) | |
echo "haproxy configration is erroneous" | |
;; | |
esac | |
exit $ret | |
;; | |
*) | |
echo "Usage: /etc/init.d/haproxy {start|stop|reload|restart|status|check}" | |
exit 2 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment