Commit 8882a4e0 authored by Jeff Trawick's avatar Jeff Trawick
Browse files

simplified apachectl...

. it now uses "httpd -k verb" support for start/restart/etc.
. it now can pass through any httpd option, so apachectl
  can be used as a replacement for invoking httpd directly
  (this practice ensures that any necessary environment
  variables are set up)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95307 13f79535-47bb-0310-9956-ffa450edef68
parent 587596f0
Loading
Loading
Loading
Loading
+7 −0
Changes for CHANGES: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
Changes with Apache 2.0.38
  *) apachectl passes through any httpd options.  Note: apachectl
     should be used in preference to httpd since it ensures that any
     appropriate environment variables have been set up.
     [Jeff Trawick]
Changes with Apache 2.0.37
  *) Fix the combination of mod_cgid, mod_setuexec, and mod_userdir.
+14 −129
Changes for support/apachectl.in: 14 added lines, 129 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
# to controlling Apache.  Written by Marc Slemko, 1997/08/23
# 
# The exit codes returned are:
#   XXX this doc is no longer correct now that the interesting
#   XXX functions are handled by httpd
#	0 - operation completed successfully
#	1 - 
#	2 - usage error
@@ -25,9 +27,6 @@ ARGV="$@"
# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
# --------------------                              --------------------
# 
# the path to your PID file
PIDFILE=@exp_runtimedir@/@progname@.pid
#
# the path to your httpd binary, including options if necessary
HTTPD='@exp_sbindir@/@progname@'
#
@@ -50,110 +49,21 @@ STATUSURL="http://localhost:@PORT@/server-status"

ERROR=0
if [ "x$ARGV" = "x" ] ; then 
    ARGS="help"
fi

for ARG in $ARGV $ARGS
do
    # check for pidfile
    if [ -f $PIDFILE ] ; then
	PID=`cat $PIDFILE`
	if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
	    STATUS="@progname@ (pid $PID) running"
	    RUNNING=1
	else
	    STATUS="@progname@ (pid $PID?) not running"
	    RUNNING=0
	fi
    else
	STATUS="@progname@ (no pid file) not running"
	RUNNING=0
    ARGV="-h"
fi

    case $ARG in
    start)
	if [ $RUNNING -eq 1 ]; then
	    echo "$0 $ARG: @progname@ (pid $PID) already running"
	    continue
	fi
	if $HTTPD ; then
	    echo "$0 $ARG: @progname@ started"
	else
	    echo "$0 $ARG: @progname@ could not be started"
	    ERROR=3
	fi
case $ARGV in
start|stop|restart|graceful)
    $HTTPD -k $ARGV
    ERROR=$?
    ;;
startssl|sslstart|start-SSL)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: @progname@ (pid $PID) already running"
            continue
        fi
        if $HTTPD -DSSL; then
            echo "$0 $ARG: @progname@ started"
        else
            echo "$0 $ARG: @progname@ could not be started"
            ERROR=3
        fi
    $HTTPD -k start -DSSL
    ERROR=$?
    ;;
    stop)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: $STATUS"
	    continue
	fi
	if kill $PID ; then
	    echo "$0 $ARG: @progname@ stopped"
	else
	    echo "$0 $ARG: @progname@ could not be stopped"
	    ERROR=4
	fi
	;;
    restart)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: @progname@ not running, trying to start"
	    if $HTTPD ; then
		echo "$0 $ARG: @progname@ started"
	    else
		echo "$0 $ARG: @progname@ could not be started"
		ERROR=5
	    fi
	else
	    if $HTTPD -t >/dev/null 2>&1; then
		if kill -HUP $PID ; then
		    echo "$0 $ARG: @progname@ restarted"
		else
		    echo "$0 $ARG: @progname@ could not be restarted"
		    ERROR=6
		fi
	    else
		echo "$0 $ARG: configuration broken, ignoring restart"
		echo "$0 $ARG: (run 'apachectl configtest' for details)"
		ERROR=6
	    fi
	fi
	;;
    graceful)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: @progname@ not running, trying to start"
	    if $HTTPD ; then
		echo "$0 $ARG: @progname@ started"
	    else
		echo "$0 $ARG: @progname@ could not be started"
		ERROR=5
	    fi
	else
	    if $HTTPD -t >/dev/null 2>&1; then
		if kill -@AP_SIG_GRACEFUL_SHORT@ $PID ; then
		    echo "$0 $ARG: @progname@ gracefully restarted"
		else
		    echo "$0 $ARG: @progname@ could not be restarted"
		    ERROR=7
		fi
	    else
		echo "$0 $ARG: configuration broken, ignoring restart"
		echo "$0 $ARG: (run 'apachectl configtest' for details)"
		ERROR=7
	    fi
	fi
configtest)
    $HTTPD -t
    ERROR=$?
    ;;
status)
    $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
@@ -161,36 +71,11 @@ do
fullstatus)
    $LYNX $STATUSURL
    ;;
    configtest)
	if $HTTPD -t; then
	    :
	else
	    ERROR=8
	fi
	;;
*)
	echo "usage: $0 (start|stop|restart|fullstatus|status|graceful|configtest|help)"
	cat <<EOF

start      - start @progname@
startssl   - start @progname@ with SSL enabled
stop       - stop @progname@
restart    - restart @progname@ if running by sending a SIGHUP or start if 
             not running
fullstatus - dump a full status screen; requires lynx and mod_status enabled
status     - dump a short status screen; requires lynx and mod_status enabled
graceful   - do a graceful restart by sending a @AP_SIG_GRACEFUL@ or start if not running
configtest - do a configuration syntax test
help       - this screen

EOF
	ERROR=2
    ;;

    $HTTPD $ARGV
    ERROR=$?
esac

done

exit $ERROR

# ====================================================================