php-fpmの自動起動の設定

PHPのコンパイル時にphp-fpmを使うオプションを追加すればPHP導入時にphp-fpmがインストールされます。インストール後の自動起動の設定をまとめます。

スポンサーリンク

自動起動用のスクリプト作成

Debianの方法に従い、スクリプトファイルを作成します。PHPのインストール先は、「/usr/local/php」とします。作成するファイルは「/etc/init.d/php-fpm」で内容は次のとおりです。スクリプト変数のDAEMON、DAEMON_ARGS、PIDFILEについては環境にあわせてください。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       Starts PHP FastCGI Process Manager Daemon
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PHP FastCGI Process Manager"
NAME=php-fpm
DAEMON=/usr/local/php/sbin/php-fpm
DAEMON_ARGS="--fpm-config /usr/local/php/etc/php-fpm.conf"
PIDFILE=/var/run/php-fpm.pid
TIMEOUT=30
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0
. /lib/init/vars.sh
. /lib/lsb/init-functions

do_check()
{
    [ "$1" != "no" ] && $DAEMON $DAEMON_ARGS -t 2>&1 | grep -v "\[ERROR\]"
    FPM_ERROR=$($DAEMON $DAEMON_ARGS -t 2>&1 | grep "\[ERROR\]")

    if [ -n "${FPM_ERROR}" ]; then
  echo "Please fix your configuration file..."
  $DAEMON $DAEMON_ARGS -t 2>&1 | grep "\[ERROR\]"
  return 1
    fi
    return 0
}

do_start()
{
  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
    || return 1
  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
    $DAEMON_ARGS 2>/dev/null \
    || return 2
}

do_stop()
{
  start-stop-daemon --stop --quiet --retry=TERM/$TIMEOUT/KILL/5 --pidfile $PIDFILE --name $NAME
  RETVAL="$?"
  [ "$RETVAL" = 2 ] && return 2
  start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
  [ "$?" = 2 ] && return 2
  rm -f $PIDFILE
  return "$RETVAL"
}

do_reload() {
  start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
  return 0
}

case "$1" in
    start)
  [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
  do_check $VERBOSE
  case "$?" in
      0)
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
      1) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  esac
  ;;
    stop)
  [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
  do_stop
  case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  esac
  ;;
    status)
        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        ;;
    check)
        do_check yes
  ;;
    reload|force-reload)
  log_daemon_msg "Reloading $DESC" "$NAME"
  do_reload
  log_end_msg $?
  ;;
    restart)
  log_daemon_msg "Restarting $DESC" "$NAME"
  do_stop
  case "$?" in
    0|1)
    do_start
    case "$?" in
      0) log_end_msg 0 ;;
      1) log_end_msg 1 ;; # Old process is still running
      *) log_end_msg 1 ;; # Failed to start
    esac
    ;;
    *)
      # Failed to stop
    log_end_msg 1
    ;;
  esac
  ;;
    *)
  echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
  exit 1
    ;;
esac

起動スクリプトの登録

Debianでは次のコマンドを使用し、起動用のスクリプトを登録します。

sudo update-rc.d php-fpm defaults
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク