1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun### BEGIN INIT INFO 3*4882a593Smuzhiyun# Provides: httpd 4*4882a593Smuzhiyun# Required-Start: $local_fs $remote_fs $network $named 5*4882a593Smuzhiyun# Required-Stop: $local_fs $remote_fs $network 6*4882a593Smuzhiyun# Should-Start: distcache 7*4882a593Smuzhiyun# Short-Description: start and stop Apache HTTP Server 8*4882a593Smuzhiyun# Description: The Apache HTTP Server is an extensible server 9*4882a593Smuzhiyun# implementing the current HTTP standards. 10*4882a593Smuzhiyun### END INIT INFO 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunARGS="-D SSL -D PHP5 -k start" 13*4882a593SmuzhiyunNAME=apache2 14*4882a593SmuzhiyunPATH=/bin:/usr/bin:/sbin:/usr/sbin 15*4882a593SmuzhiyunDAEMON=/usr/sbin/httpd 16*4882a593SmuzhiyunSUEXEC=/usr/lib/apache/suexec 17*4882a593SmuzhiyunPIDFILE=/run/httpd.pid 18*4882a593SmuzhiyunCONF=/etc/apache2/httpd.conf 19*4882a593SmuzhiyunAPACHECTL=/usr/sbin/apachectl 20*4882a593Smuzhiyun 21*4882a593Smuzhiyuntrap "" 1 22*4882a593Smuzhiyunexport LANG=C 23*4882a593Smuzhiyunexport PATH 24*4882a593Smuzhiyun 25*4882a593Smuzhiyuntest -f $DAEMON || exit 0 26*4882a593Smuzhiyuntest -f $APACHECTL || exit 0 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun# ensure we don't leak environment vars into apachectl 29*4882a593SmuzhiyunAPACHECTL="env -i LANG=${LANG} PATH=${PATH} $APACHECTL" 30*4882a593Smuzhiyun 31*4882a593Smuzhiyunapache_conftest() { 32*4882a593Smuzhiyun if $($APACHECTL configtest > /dev/null 2>&1 ); then 33*4882a593Smuzhiyun return 0 34*4882a593Smuzhiyun else 35*4882a593Smuzhiyun return 1 36*4882a593Smuzhiyun fi 37*4882a593Smuzhiyun} 38*4882a593Smuzhiyun 39*4882a593Smuzhiyunapache_wait_start() { 40*4882a593Smuzhiyun local STATUS=$1 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun if [ $STATUS != 0 ] ; then 43*4882a593Smuzhiyun return $STATUS 44*4882a593Smuzhiyun fi 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun local i=0 47*4882a593Smuzhiyun while : ; do 48*4882a593Smuzhiyun PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE)) 49*4882a593Smuzhiyun if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then 50*4882a593Smuzhiyun return $STATUS 51*4882a593Smuzhiyun fi 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun if [ $i = "20" ] ; then 54*4882a593Smuzhiyun return 2 55*4882a593Smuzhiyun fi 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun sleep 1 58*4882a593Smuzhiyun i=$(($i+1)) 59*4882a593Smuzhiyun done 60*4882a593Smuzhiyun} 61*4882a593Smuzhiyun 62*4882a593Smuzhiyunapache_wait_stop() { 63*4882a593Smuzhiyun local STATUS=$1 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun if [ $STATUS != 0 ] ; then 66*4882a593Smuzhiyun return $STATUS 67*4882a593Smuzhiyun fi 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE)) 70*4882a593Smuzhiyun if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then 71*4882a593Smuzhiyun local i=0 72*4882a593Smuzhiyun while kill -0 "${PIDTMP:-}" 2> /dev/null; do 73*4882a593Smuzhiyun if [ $i = '60' ]; then 74*4882a593Smuzhiyun STATUS=2 75*4882a593Smuzhiyun break 76*4882a593Smuzhiyun fi 77*4882a593Smuzhiyun sleep 1 78*4882a593Smuzhiyun i=$(($i+1)) 79*4882a593Smuzhiyun done 80*4882a593Smuzhiyun return $STATUS 81*4882a593Smuzhiyun else 82*4882a593Smuzhiyun return $STATUS 83*4882a593Smuzhiyun fi 84*4882a593Smuzhiyun} 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun# 87*4882a593Smuzhiyun# Function that starts the daemon/service 88*4882a593Smuzhiyun# 89*4882a593Smuzhiyundo_start() 90*4882a593Smuzhiyun{ 91*4882a593Smuzhiyun # Return 92*4882a593Smuzhiyun # 0 if daemon has been started 93*4882a593Smuzhiyun # 1 if daemon was already running 94*4882a593Smuzhiyun # 2 if daemon could not be started 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then 97*4882a593Smuzhiyun return 1 98*4882a593Smuzhiyun fi 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun if apache_conftest ; then 101*4882a593Smuzhiyun $APACHECTL start 102*4882a593Smuzhiyun apache_wait_start $? 103*4882a593Smuzhiyun return $? 104*4882a593Smuzhiyun else 105*4882a593Smuzhiyun return 2 106*4882a593Smuzhiyun fi 107*4882a593Smuzhiyun} 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun# 110*4882a593Smuzhiyun# Function that stops the daemon/service 111*4882a593Smuzhiyun# 112*4882a593Smuzhiyundo_stop() 113*4882a593Smuzhiyun{ 114*4882a593Smuzhiyun # Return 115*4882a593Smuzhiyun # 0 if daemon has been stopped 116*4882a593Smuzhiyun # 1 if daemon was already stopped 117*4882a593Smuzhiyun # 2 if daemon could not be stopped 118*4882a593Smuzhiyun # other if a failure occurred 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun local AP_RET=0 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun if pidof $DAEMON > /dev/null 2>&1 ; then 123*4882a593Smuzhiyun if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then 124*4882a593Smuzhiyun AP_RET=2 125*4882a593Smuzhiyun else 126*4882a593Smuzhiyun AP_RET=1 127*4882a593Smuzhiyun fi 128*4882a593Smuzhiyun else 129*4882a593Smuzhiyun AP_RET=0 130*4882a593Smuzhiyun fi 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun # AP_RET is: 133*4882a593Smuzhiyun # 0 if Apache (whichever) is not running 134*4882a593Smuzhiyun # 1 if Apache (whichever) is running 135*4882a593Smuzhiyun # 2 if Apache from the PIDFILE is running 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun if [ $AP_RET = 0 ] ; then 138*4882a593Smuzhiyun return 1 139*4882a593Smuzhiyun fi 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun if [ $AP_RET = 2 ] && apache_conftest ; then 142*4882a593Smuzhiyun $APACHECTL stop 143*4882a593Smuzhiyun apache_wait_stop $? 144*4882a593Smuzhiyun return $? 145*4882a593Smuzhiyun else 146*4882a593Smuzhiyun if [ $AP_RET = 2 ]; then 147*4882a593Smuzhiyun kill $(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE)) 148*4882a593Smuzhiyun apache_wait_stop $? 149*4882a593Smuzhiyun return $? 150*4882a593Smuzhiyun elif [ $AP_RET = 1 ] ; then 151*4882a593Smuzhiyun return 2 152*4882a593Smuzhiyun fi 153*4882a593Smuzhiyun fi 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun} 156*4882a593Smuzhiyun 157*4882a593Smuzhiyuncase "$1" in 158*4882a593Smuzhiyun start) 159*4882a593Smuzhiyun echo -n "Starting web server: $NAME" 160*4882a593Smuzhiyun do_start 161*4882a593Smuzhiyun case $? in 162*4882a593Smuzhiyun 0|1) 163*4882a593Smuzhiyun echo . 164*4882a593Smuzhiyun exit 0 165*4882a593Smuzhiyun ;; 166*4882a593Smuzhiyun 2) 167*4882a593Smuzhiyun echo failed 168*4882a593Smuzhiyun exit 1 169*4882a593Smuzhiyun ;; 170*4882a593Smuzhiyun esac 171*4882a593Smuzhiyun ;; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun stop) 174*4882a593Smuzhiyun echo -n "Stopping web server: $NAME" 175*4882a593Smuzhiyun do_stop 176*4882a593Smuzhiyun case $? in 177*4882a593Smuzhiyun 0|1) 178*4882a593Smuzhiyun echo . 179*4882a593Smuzhiyun exit 0 180*4882a593Smuzhiyun ;; 181*4882a593Smuzhiyun 2) 182*4882a593Smuzhiyun echo failed 183*4882a593Smuzhiyun exit 1 184*4882a593Smuzhiyun ;; 185*4882a593Smuzhiyun esac 186*4882a593Smuzhiyun ;; 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun reload) 189*4882a593Smuzhiyun echo -n "Reloading $NAME configuration" 190*4882a593Smuzhiyun kill -HUP `cat $PIDFILE` 191*4882a593Smuzhiyun ;; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun reload-modules) 194*4882a593Smuzhiyun echo -n "Reloading $NAME modules" 195*4882a593Smuzhiyun $APACHECTL restart 196*4882a593Smuzhiyun ;; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun restart) 199*4882a593Smuzhiyun echo "Restarting web server: $NAME" 200*4882a593Smuzhiyun do_stop 201*4882a593Smuzhiyun case "$?" in 202*4882a593Smuzhiyun 0|1) 203*4882a593Smuzhiyun do_start 204*4882a593Smuzhiyun exit $? 205*4882a593Smuzhiyun ;; 206*4882a593Smuzhiyun *) 207*4882a593Smuzhiyun # Failed to stop 208*4882a593Smuzhiyun exit 1 209*4882a593Smuzhiyun ;; 210*4882a593Smuzhiyun esac 211*4882a593Smuzhiyun ;; 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun force-reload) 214*4882a593Smuzhiyun $0 reload-modules 215*4882a593Smuzhiyun exit $? 216*4882a593Smuzhiyun ;; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun *) 219*4882a593Smuzhiyun echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|force-reload|restart}" 220*4882a593Smuzhiyun exit 1 221*4882a593Smuzhiyun ;; 222*4882a593Smuzhiyunesac 223*4882a593Smuzhiyun 224*4882a593Smuzhiyunif [ $? = 0 ]; then 225*4882a593Smuzhiyun echo . 226*4882a593Smuzhiyun exit 0 227*4882a593Smuzhiyunelse 228*4882a593Smuzhiyun echo failed 229*4882a593Smuzhiyun exit 1 230*4882a593Smuzhiyunfi 231