Apache起動スクリプト

提供: ウィキデュッカ
移動: 案内検索

Apache をソースからインストールした場合、起動スクリプトは、 /usr/local/apache2/bin/apachectl を使用していることが多いと思われる。

start,stop は特に問題ないが、restart をした場合、reload 扱いになり、これでは mod_python 等、mod_言語 なモジュールを使用している場合、問題が発生する。

というわけで、書いてみた。

※PIDFILE の PATH は正確に変えてください。 ファイルの有無で、停止と起動の確認をしてるので、正しいPATHを書かないと FAILED となりますので。

  • /etc/rc.d/init.d/apache2
  1. #!/bin/sh
  2. #
  3. # chkconfig: 345 85 15
  4. # description: Apache2 Web Server
  5.  
  6. APACTRL="/usr/local/apache2/bin/apachectl"
  7. PIDFILE="/usr/local/apache2/run/httpd.pid"
  8.  
  9. RETRY=30
  10.  
  11. start() {
  12.         echo -n $"Starting httpd: "
  13.  
  14.         EXEC=$($APACTRL start 2>&1)
  15.  
  16.         ## check pid file.
  17.         COUNT=0
  18.         while [ $COUNT -lt $RETRY ]
  19.         do
  20.                 test -f $PIDFILE
  21.                 PIDSTAT=$?
  22.  
  23.                 if [ $PIDSTAT -eq 0 ]
  24.                 then
  25.                         STATUS=0
  26.                         break
  27.                 else
  28.                         STATUS=1
  29.                         COUNT=`expr $COUNT + 1`
  30.                         sleep 1
  31.                 fi
  32.         done
  33.  
  34.         if [ $STATUS -eq 0 -a -z "$EXEC" ]
  35.         then
  36.                 echo "[ OK ]"
  37.         else
  38.                 echo "[ FAILED ]"
  39.                 echo ">>> $EXEC"
  40.         fi
  41. }
  42.  
  43. stop() {
  44.         echo -n $"Stopping httpd: "
  45.  
  46.         EXEC=$($APACTRL stop 2>&1)
  47.  
  48.         ## check pid file.
  49.         COUNT=0
  50.         while [ $COUNT -lt $RETRY ]
  51.         do
  52.                 test -f $PIDFILE
  53.                 PIDSTAT=$?
  54.  
  55.                 if [ $PIDSTAT -eq 1 ]
  56.                 then
  57.                         STATUS=0
  58.                         break
  59.                 else
  60.                         STATUS=1
  61.                         COUNT=`expr $COUNT + 1`
  62.                         sleep 1
  63.                 fi
  64.         done
  65.  
  66.         if [ $STATUS -eq 0 -a -z "$EXEC" ]
  67.         then
  68.                 echo "[ OK ]"
  69.         else
  70.                 echo "[ FAILED ]"
  71.                 echo ">>> $EXEC"
  72.         fi
  73. }
  74.  
  75. case "$1" in
  76.         start)
  77.         start
  78.         ;;
  79.         stop)
  80.         stop
  81.         ;;
  82.         fullstatus|status|graceful| \
  83.         graceful-stop|configtest|startssl)
  84.         $APACTRL $@
  85.         ;;
  86.         restart)
  87.         stop
  88.         start
  89.         ;;
  90.         *)
  91.         $APACTRL
  92.         ;;
  93. esac
  94.  
  95.  
  96. exit 0
  97. # EOF