meta-openembedded/meta-webserver/recipes-httpd/apache2/files/init
Yi Zhao 6f4d0dbfbc apache2: create log/run directory via pkg_postinst
The commit e789c3837c tries to create
log/run directory in initscript/systemd unit file. This is not a correct
method. We should create them in pkg_postinst.

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-05-21 20:16:40 -07:00

4.8 KiB

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