Apache起動スクリプト
提供: Wikiducca
Apache をソースからインストールした場合、起動スクリプトは、 /usr/local/apache2/bin/apachectl を使用していることが多いと思われる。
start,stop は特に問題ないが、restart をした場合、reload 扱いになり、これでは mod_python 等、mod_言語 なモジュールを使用している場合、問題が発生する。
というわけで、書いてみた。
※PIDFILE の PATH は正確に変えてください。 ファイルの有無で、停止と起動の確認をしてるので、正しいPATHを書かないと FAILED となりますので。
- /etc/rc.d/init.d/apache2
#!/bin/sh
#
# chkconfig: 345 85 15
# description: Apache2 Web Server
APACTRL="/usr/local/apache2/bin/apachectl"
PIDFILE="/usr/local/apache2/run/httpd.pid"
RETRY=30
start() {
echo -n $"Starting httpd: "
EXEC=$($APACTRL start 2>&1)
## check pid file.
COUNT=0
while [ $COUNT -lt $RETRY ]
do
test -f $PIDFILE
PIDSTAT=$?
if [ $PIDSTAT -eq 0 ]
then
STATUS=0
break
else
STATUS=1
COUNT=`expr $COUNT + 1`
sleep 1
fi
done
if [ $STATUS -eq 0 -a -z "$EXEC" ]
then
echo "[ OK ]"
else
echo "[ FAILED ]"
echo ">>> $EXEC"
fi
}
stop() {
echo -n $"Stopping httpd: "
EXEC=$($APACTRL stop 2>&1)
## check pid file.
COUNT=0
while [ $COUNT -lt $RETRY ]
do
test -f $PIDFILE
PIDSTAT=$?
if [ $PIDSTAT -eq 1 ]
then
STATUS=0
break
else
STATUS=1
COUNT=`expr $COUNT + 1`
sleep 1
fi
done
if [ $STATUS -eq 0 -a -z "$EXEC" ]
then
echo "[ OK ]"
else
echo "[ FAILED ]"
echo ">>> $EXEC"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
fullstatus|status|graceful| \
graceful-stop|configtest|startssl)
$APACTRL $@
;;
restart)
stop
start
;;
*)
$APACTRL
;;
esac
exit 0
# EOF