CCL Home Page
Up Directory CCL apache-tomcat.txt
#!/bin/bash
#
# Apache control script designed to allow an easy command line interface
# to controlling Apache.  Written by Marc Slemko, 1997/08/23
# 
# The exit codes returned are:
#	0 - operation completed successfully
#	1 - 
#	2 - usage error
#	3 - httpd could not be started
#	4 - httpd could not be stopped
#	5 - httpd could not be started during a restart
#	6 - httpd could not be restarted during a restart
#	7 - httpd could not be restarted during a graceful restart
#	8 - configuration syntax error
#
# When multiple arguments are given, only the error from the _last_
# one is reported.  Run "apachectl help" for usage info
#
#
# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
# --------------------                              --------------------
# 
# the path to your PID file
PIDFILE=/usr/local/apache_1.3.14/logs/httpd.pid
#
# the path to your httpd binary, including options if necessary
HTTPD=/usr/local/apache_1.3.14/bin/httpd
#
# a command that outputs a formatted text version of the HTML at the
# url given on the command line.  Designed for lynx, however other
# programs may work.  
LYNX="lynx -dump"
#
# the URL to your server's mod_status status page.  If you do not
# have one, then status and fullstatus will not work.
STATUSURL="http://localhost/server-status"
#
# --------------------                              --------------------
# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

DATE=`date`
JAKARTA_HOME=/usr/local/tomcat_3.2.1
TOMCAT_HOME=${JAKARTA_HOME}/tomcat-3.2.1
export JAKARTA_HOME TOMCAT_HOME 
# WAS_BORN_BY_APACHE=true
# export WAS_BORN_BY_APACHE

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

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

    case $ARG in
    start)
	if [ $RUNNING -eq 1 ]; then
	    echo "$0 $ARG: httpd (pid $PID) already running"
	    continue
	fi
        # Tomcat and Apache is run as user webrun
        # write start mark to log file which combines stdout & stderr
        su - webrun --command="( echo ========START: $DATE =============== )>>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  &"

        # start Tomcat as user webrun. Direct stdout/stderr to log file
        su - webrun --command="( nohup $TOMCAT_HOME/bin/startup.sh )>>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  &"
        echo Started Tomcat
        sleep 2
        echo Waited 2 seconds before starting Apache

	if $HTTPD ; then
	    echo "$0 $ARG: httpd started"
	else
	    echo "$0 $ARG: httpd could not be started"
	    ERROR=3
	fi
	;;
    startssl|sslstart|start-SSL)
	if [ $RUNNING -eq 1 ]; then
	    echo "$0 $ARG: httpd (pid $PID) already running"
	    continue
	fi

        # Tomcat and Apache is run as user webrun
        # write start mark to log file which combines stdout & stderr
        su - webrun --command " echo ========START: $DATE =============== >>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  &"

        # start Tomcat as user webrun. Direct stdout/stderr to log file
        su - webrun -c "nohup $TOMCAT_HOME/bin/startup.sh >>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  &"

        echo Started Tomcat
        # wait a few seconds before starting Apache
        sleep 2
        echo Waited 2 seconds before starting Apache

	if $HTTPD -DSSL; then
	    echo "$0 $ARG: httpd started"
	else
	    echo "$0 $ARG: httpd could not be started"
	    ERROR=3
	fi
	;;
    stop)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: $STATUS"
	    continue
	fi

	if kill $PID ; then
	    echo "$0 $ARG: httpd stopped"
	else
	    echo "$0 $ARG: httpd could not be stopped"
	    ERROR=4
	fi
        # wait 2 seconds before stoping Tomcat to make sure Apache is gone
        sleep 2
        echo Waited 2 seconds before stoping Tomcat
        su - webrun -c "echo ========STOP: $DATE ===============>>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  &"

        su - webrun -c "$TOMCAT_HOME/bin/shutdown.sh >>${TOMCAT_HOME}/logs/t3.2_jk 2>&1  & "

        echo Stopped Tomcat
	;;
    restart)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: httpd not running, trying to start"
	    if $HTTPD ; then
		echo "$0 $ARG: httpd started"
	    else
		echo "$0 $ARG: httpd could not be started"
		ERROR=5
	    fi
	else
	    if $HTTPD -t >/dev/null 2>&1; then
		if kill -HUP $PID ; then
		    echo "$0 $ARG: httpd restarted"
		else
		    echo "$0 $ARG: httpd 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: httpd not running, trying to start"
	    if $HTTPD ; then
		echo "$0 $ARG: httpd started"
	    else
		echo "$0 $ARG: httpd could not be started"
		ERROR=5
	    fi
	else
	    if $HTTPD -t >/dev/null 2>&1; then
		if kill -USR1 $PID ; then
		    echo "$0 $ARG: httpd gracefully restarted"
		else
		    echo "$0 $ARG: httpd 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
	;;
    status)
	$LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
	;;
    fullstatus)
	$LYNX $STATUSURL
	;;
    configtest)
	if $HTTPD -t; then
	    :
	else
	    ERROR=8
	fi
	;;
    *)
	echo "usage: $0 (start|stop|restart|fullstatus|status|graceful|configtest|help)"
	cat <.
# 
Modified: Mon Jan 15 02:04:11 2001 GMT
Page accessed 399 times since Tue Mar 15 12:58:31 2005 GMT