View Single Post
  #7  
Old 24th April 2007, 13:58
Dr.Oetker Dr.Oetker is offline
Junior Member
 
Join Date: Apr 2007
Posts: 26
Thanks: 0
Thanked 0 Times in 0 Posts
Default

my apache2 init.d file:

Code:
#!/bin/sh -e
#
# apache2               This init.d script is used to start apache2.
#                       It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
        HAVE_APACHE2=1
else
        exit 0
fi

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then
        [ "$VERBOSE" != no ] && echo "Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.";
        exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
        PID=""
        PIDFILE=""
        # let's try to find the pid file
        # apache2 allows more than PidFile entry in the config but only
        # the last found in the config is used
        for PFILE in `grep ^PidFile /etc/apache2/* -r | awk '{print $2}'`; do

                PIDFILE="$PFILE"
                if [ -e "$PIDFILE" ]; then
                        PID=`cat $PIDFILE`
                fi
        done

        if `apache2 -t > /dev/null 2>&1`; then
                # if the config is ok than we just stop normaly

                if [ -e "$PIDFILE" ]
                then
                        PID=`cat $PIDFILE`

                        $APACHE2 -k stop

                        CNT=0
                        while [ 1 ]
                        do
                                CNT=$(expr $CNT + 1)

                                [ ! -d /proc/$PID ] && break

                                if [ $CNT -gt 60 ]
                                then
                                        echo " ... failed!"
                                        echo "Apache2 failed to honor the stop command, please investigate the situation by hand."
                                        exit 1
                                fi

                                sleep 1
                        done
                else
                        echo -n " ... no pidfile found! not running?"
                

fi

        else
                # if we are here something is broken and we need to try
                # to exit as nice and clean as possible

                # if pidof is null for some reasons the script exits automagically
                # classified as good/unknown feature
                PIDS=`pidof apache2` || true

                REALPID=0
                # if there is a pid we need to verify that belongs to apache2
                # for real
                for i in $PIDS; do
                        if [ "$i" = "$PID" ]; then
                                # in this case the pid stored in the
                                # pidfile matches one of the pidof apache
                                # so a simple kill will make it
                                REALPID=1
                        fi
                done

                if [ $REALPID = 1 ]; then
                        # in this case it is everything nice and dandy
                        # and we kill apache2
                        kill $PID
                else
                        # this is the worst situation... just kill all of them
                        #for i in $PIDS; do
                        #       kill $i
                        #done
                        # Except, we can't do that, because it's very, very bad
                        echo " ... failed!"
                        echo "You may still have some apache2 processes running.  There are"
                        echo "processes named 'apache2' which do not match your pid file,"
                        echo "and in the name of safety, we've left them alone.  Please review"
                        echo "the situation by hand."
                fi
        fi
}

# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
        start)
                [ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
                #ssl_scache shouldn't be here if we're just starting up.
                [ -f /var/run/apache2/ssl_scache ] && rm -f /var/run/apache2/*ssl_scache*
                echo -n "Starting web server: Apache2"
                $APACHE2CTL startssl
                echo "."
        ;;
        stop)
                echo -n "Stopping web server: Apache2"
                apache_stop
                echo "."
        ;;
        reload)
                echo -n "Reloading web server config..."
                $APACHE2CTL graceful $2
                echo "done."
        ;;
        restart | force-reload)
                echo -n "Forcing reload of web server: Apache2"
                apache_stop
                $APACHE2CTL startssl
                echo "."
        ;;
        *)
                echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload"
        ;;
esac
My distribution is Debian Sarge 3.1 with ISPConfig 2.2.12
Reply With Quote