Apache起動スクリプト

2019年1月8日 (火) 07:58時点における大沼 (トーク | 投稿記録)による版 (灌漑水路 (ノート) による版 6792 を取り消し)

<nowiki>Wikiduccaは終了しました。今後はゴールドペディアをご利用ください。<nowiki>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