#!/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