blob: 758d133b9e30a34a80aef99f13941586c59a6dbb [file] [log] [blame]
#!/bin/sh
### BEGIN INIT INFO
# Provides: httpd
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: distcache
# Short-Description: start and stop Apache HTTP Server
# Description: The Apache HTTP Server is an extensible server
# implementing the current HTTP standards.
### END INIT INFO
ARGS="-D SSL -D PHP5 -k start"
NAME=apache2
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/httpd
SUEXEC=/usr/lib/apache/suexec
PIDFILE=/run/httpd.pid
CONF=/etc/apache2/httpd.conf
APACHECTL=/usr/sbin/apachectl
trap "" 1
export LANG=C
export PATH
test -f $DAEMON || exit 0
test -f $APACHECTL || exit 0
# ensure we don't leak environment vars into apachectl
APACHECTL="env -i LANG=${LANG} PATH=${PATH} $APACHECTL"
apache_conftest() {
if $($APACHECTL configtest > /dev/null 2>&1 ); then
return 0
else
return 1
fi
}
apache_wait_start() {
local STATUS=$1
if [ $STATUS != 0 ] ; then
return $STATUS
fi
local i=0
while : ; do
PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
return $STATUS
fi
if [ $i = "20" ] ; then
return 2
fi
sleep 1
i=$(($i+1))
done
}
apache_wait_stop() {
local STATUS=$1
if [ $STATUS != 0 ] ; then
return $STATUS
fi
PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
local i=0
while kill -0 "${PIDTMP:-}" 2> /dev/null; do
if [ $i = '60' ]; then
STATUS=2
break
fi
sleep 1
i=$(($i+1))
done
return $STATUS
else
return $STATUS
fi
}
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then
return 1
fi
if apache_conftest ; then
$APACHECTL start
apache_wait_start $?
return $?
else
return 2
fi
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
local AP_RET=0
if pidof $DAEMON > /dev/null 2>&1 ; then
if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then
AP_RET=2
else
AP_RET=1
fi
else
AP_RET=0
fi
# AP_RET is:
# 0 if Apache (whichever) is not running
# 1 if Apache (whichever) is running
# 2 if Apache from the PIDFILE is running
if [ $AP_RET = 0 ] ; then
return 1
fi
if [ $AP_RET = 2 ] && apache_conftest ; then
$APACHECTL stop
apache_wait_stop $?
return $?
else
if [ $AP_RET = 2 ]; then
kill $(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
apache_wait_stop $?
return $?
elif [ $AP_RET = 1 ] ; then
return 2
fi
fi
}
case "$1" in
start)
echo -n "Starting web server: $NAME"
do_start
case $? in
0|1)
echo .
exit 0
;;
2)
echo failed
exit 1
;;
esac
;;
stop)
echo -n "Stopping web server: $NAME"
do_stop
case $? in
0|1)
echo .
exit 0
;;
2)
echo failed
exit 1
;;
esac
;;
reload)
echo -n "Reloading $NAME configuration"
kill -HUP `cat $PIDFILE`
;;
reload-modules)
echo -n "Reloading $NAME modules"
$APACHECTL restart
;;
restart)
echo "Restarting web server: $NAME"
do_stop
case "$?" in
0|1)
do_start
exit $?
;;
*)
# Failed to stop
exit 1
;;
esac
;;
force-reload)
$0 reload-modules
exit $?
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|force-reload|restart}"
exit 1
;;
esac
if [ $? = 0 ]; then
echo .
exit 0
else
echo failed
exit 1
fi