微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习php-fpm服务启动脚本的方法

这个我自己在用,没问题,有三个path需要自己酌情修改

先创建自启动文件/etc/init.d/PHP-fpm

内容如下:

#! /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 the PHP FastCGI Process Manager daemon
### END INIT INFO
prefix=/usr/local/PHP
exec_prefix=${prefix}
PHP_fpm_BIN=${exec_prefix}/sbin/PHP-fpm
PHP_fpm_CONF=${prefix}/etc/PHP-fpm.conf
PHP_fpm_PID=${prefix}/var/run/PHP-fpm.pid
PHP_opts=--fpm-config $PHP_fpm_CONF --pid $PHP_fpm_PID
wait_for_pid () {
  try=0
  while test $try -lt 35 ; do
    case $1 in
      'created')
      if [ -f $2 ] ; then
        try=''
        break
      fi
      ;;
      'removed')
      if [ ! -f $2 ] ; then
        try=''
        break
      fi
      ;;
    esac
    echo -n .
    try=`expr $try + 1`
    sleep 1
  done
}
case $1 in
  start)
    echo -n Starting PHP-fpm 
    $PHP_fpm_BIN --daemonize $PHP_opts
    if [ $? != 0 ] ; then
      echo  Failed
      exit 1
    fi
    wait_for_pid created $PHP_fpm_PID
    if [ -n $try ] ; then
      echo  Failed
      exit 1
    else
      echo  done
    fi
  ;;
  stop)
    echo -n Gracefully shutting down PHP-fpm 
    if [ ! -r $PHP_fpm_PID ] ; then
      echo warning, no pid file found - PHP-fpm is not running ?
      exit 1
    fi
    kill -QUIT `cat $PHP_fpm_PID`
    wait_for_pid removed $PHP_fpm_PID
    if [ -n $try ] ; then
      echo  Failed. Use force-quit
      exit 1
    else
      echo  done
    fi
  ;;
  status)
    if [ ! -r $PHP_fpm_PID ] ; then
      echo PHP-fpm is stopped
      exit 0
    fi
    PID=`cat $PHP_fpm_PID`
    if ps -p $PID | grep -q $PID; then
      echo PHP-fpm (pid $PID) is running...
    else
      echo PHP-fpm dead but pid file exists
    fi
  ;;
  force-quit)
    echo -n Terminating PHP-fpm 
    if [ ! -r $PHP_fpm_PID ] ; then
      echo warning, no pid file found - PHP-fpm is not running ?
      exit 1
    fi
    kill -TERM `cat $PHP_fpm_PID`
    wait_for_pid removed $PHP_fpm_PID
    if [ -n $try ] ; then
      echo  Failed
      exit 1
    else
      echo  done
    fi
  ;;
  restart)
    $0 stop
    $0 start
  ;;
  reload)
    echo -n Reload service PHP-fpm 
    if [ ! -r $PHP_fpm_PID ] ; then
      echo warning, no pid file found - PHP-fpm is not running ?
      exit 1
    fi
    kill -USR2 `cat $PHP_fpm_PID`
    echo  done
  ;;
  *)
    echo Usage: $0 {start|stop|force-quit|restart|reload|status}
    exit 1
  ;;
esac

配置PHP-fpm服务

# 设置权限
chmod 755 /etc/init.d/PHP-fpm
# PHP-fpm加入服务
chkconfig --add PHP-fpm
# PHP-fpm 234级别下设置为启动
chkconfig PHP-fpm on
# 查看PHP-fpm服务当前配置
chkconfig --list PHP-fpm
PHP-fpm     0:off  1:off  2:on  3:on  4:on  5:on  6:off

PHP-fpm使用方法

# 启动
service PHP-fpm start
# 关闭
service PHP-fpm stop
# 重启
service PHP-fpm restart
# 重载
service PHP-fpm reload
#检查配置文件
service PHP-fpm configtest

脚本说明

# Source function library. 
. /etc/rc.d/init.d/functions 
# Source networking configuration. 
. /etc/sysconfig/network

以上量行代码有人会疑问他们到底是做什么的,'.'是source类似于程序中的include和require,将functions里面的方法全部倒入到这边,这边程序便可以使用,例如这边用到的daemon、status。第二行的network实际上就几行,如下

NETWORKING=yes
HOSTNAME=E10162

将他们作为变量赋值,判断网卡是否启动,如果你的Nginx不走网卡,其实网络这段可以去掉.

相关学习推荐:PHP编程从入门到精通

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐