summaryrefslogtreecommitdiffstats
path: root/debian/haproxy.init
diff options
context:
space:
mode:
Diffstat (limited to 'debian/haproxy.init')
-rw-r--r--debian/haproxy.init197
1 files changed, 197 insertions, 0 deletions
diff --git a/debian/haproxy.init b/debian/haproxy.init
new file mode 100644
index 0000000..6f4096b
--- /dev/null
+++ b/debian/haproxy.init
@@ -0,0 +1,197 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: haproxy
+# Required-Start: $local_fs $network $remote_fs $syslog $named
+# Required-Stop: $local_fs $remote_fs $syslog $named
+# 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 <acornet@debian.org>
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+BASENAME=haproxy
+PIDFILE=/var/run/${BASENAME}.pid
+CONFIG=/etc/${BASENAME}/${BASENAME}.cfg
+HAPROXY=/usr/sbin/haproxy
+RUNDIR=/run/${BASENAME}
+EXTRAOPTS=
+
+test -x $HAPROXY || exit 0
+
+if [ -e /etc/default/${BASENAME} ]; then
+ . /etc/default/${BASENAME}
+fi
+
+test -f "$CONFIG" || exit 0
+
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+. /lib/lsb/init-functions
+
+
+check_haproxy_config()
+{
+ $HAPROXY -c -f "$CONFIG" $EXTRAOPTS >/dev/null
+ if [ $? -eq 1 ]; then
+ log_end_msg 1
+ exit 1
+ fi
+}
+
+haproxy_start()
+{
+ [ -d "$RUNDIR" ] || mkdir "$RUNDIR"
+ chown haproxy:haproxy "$RUNDIR"
+ chmod 2775 "$RUNDIR"
+
+ check_haproxy_config
+
+ start-stop-daemon --quiet --oknodo --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
+
+ ret=0
+ tmppid="$(mktemp)"
+
+ # HAProxy's pidfile may contain multiple PIDs, if nbproc > 1, so loop
+ # over each PID. Note that start-stop-daemon has a --pid option, but it
+ # was introduced in dpkg 1.17.6, post wheezy, so we use a temporary
+ # pidfile instead to ease backports.
+ for pid in $(cat $PIDFILE); do
+ echo "$pid" > "$tmppid"
+ start-stop-daemon --quiet --oknodo --stop \
+ --retry 5 --pidfile "$tmppid" --exec $HAPROXY || ret=$?
+ done
+
+ rm -f "$tmppid"
+ [ $ret -eq 0 ] && rm -f $PIDFILE
+
+ return $ret
+}
+
+haproxy_reload()
+{
+ check_haproxy_config
+
+ $HAPROXY -f "$CONFIG" -p $PIDFILE -sf $(cat $PIDFILE) -D $EXTRAOPTS \
+ || 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
+}
+
+
+case "$1" in
+start)
+ log_daemon_msg "Starting haproxy" "${BASENAME}"
+ haproxy_start
+ ret=$?
+ case "$ret" in
+ 0)
+ log_end_msg 0
+ ;;
+ 1)
+ log_end_msg 1
+ echo "pid file '$PIDFILE' found, ${BASENAME} not started."
+ ;;
+ 2)
+ log_end_msg 1
+ ;;
+ esac
+ exit $ret
+ ;;
+stop)
+ log_daemon_msg "Stopping haproxy" "${BASENAME}"
+ 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" "${BASENAME}"
+ haproxy_reload
+ ret=$?
+ case "$ret" in
+ 0|1)
+ log_end_msg 0
+ ;;
+ 2)
+ log_end_msg 1
+ ;;
+ esac
+ exit $ret
+ ;;
+restart)
+ log_daemon_msg "Restarting haproxy" "${BASENAME}"
+ haproxy_stop
+ haproxy_start
+ ret=$?
+ case "$ret" in
+ 0)
+ log_end_msg 0
+ ;;
+ 1)
+ log_end_msg 1
+ ;;
+ 2)
+ log_end_msg 1
+ ;;
+ esac
+ exit $ret
+ ;;
+status)
+ haproxy_status
+ ret=$?
+ case "$ret" in
+ 0)
+ echo "${BASENAME} is running."
+ ;;
+ 1)
+ echo "${BASENAME} dead, but $PIDFILE exists."
+ ;;
+ *)
+ echo "${BASENAME} not running."
+ ;;
+ esac
+ exit $ret
+ ;;
+*)
+ echo "Usage: /etc/init.d/${BASENAME} {start|stop|reload|restart|status}"
+ exit 2
+ ;;
+esac
+
+: