231 lines
4.8 KiB
Bash
Executable File
231 lines
4.8 KiB
Bash
Executable File
#!/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
|