PHP-FPM自启动脚本编写与详细操作说明
2016-12-27 12:52
411 查看
以前重启php时都是使用/usr/local/sbin/php-fpm来直接管理,包括nginx也是这样的操作。今天捣腾了一下,想写个nginx和php-fpm自启动脚本,酱紫以后就不必要那么麻烦了。当然这个脚本在网上是很多的,没有那个必要自己写。但是网上的东东真的按照文章去做了,又发现整天都提示php-fpm 服务不支持 chkconfig,或者有些不报的,使用/etc/init.d/php-fpm
start倒是报错,很不友好的shell就不用了,于是结合改了改,发现还是挺不错的。
分两步骤加深理解吧,在Centos中,php5.3以上应该都可以吧,我目前使用的是php5.6.7和centos6.5。理解下面两步骤,其它自启动服务都是接近该原理。
一.确定php安装的位置
第一步是要清楚你的php装在哪里,shell脚本需要用到运行的php-fpm,php-fpm.conf配置文件,php-fpm.pid等三个文件。
1.查找php安装位置:
#ps -ef | grep php或者 php -i 或者应用目录写 echo phpinfo();die;查看php安装目录.
2.得到需要的文件位置:
找到安装目录,可以php安装目录中找到sbin下面的php-fpm,在etc下面找到php-fpm.conf,vi php-fpm.conf查找 pid可以得到php-fpm.pid所在位置.
如我的:
/usr/local/php/sbin/php-fpm
/usr/local/php/etc/php-fpm.conf
var/run/php-fpm.pid
二.创建php-fpm自启动文件。
1.在/etc/init.d/下面创建 php-fpm
#touch /etc/init.d/php-fpm#vim /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
# Source function library.
. /etc/rc.d/init.d/functions
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
BINFILE="/usr/local/php/sbin/php-fpm"
CFGFILE="/usr/local/php/etc/php-fpm.conf"
PIDFILE="/var/run/php-fpm.pid"
LOCKFILE="/var/lock/php-fpm.lock"
RETVAL=0
start() {
[[ -x $BINFILE ]] || exit 5
[[ -f $CFGFILE ]] || exit 6
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -gt 0 ]]; then
echo "The php-fpm is already running."
return 1
fi
$BINFILE -t >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "The php-fpm configure has error."
return 1
fi
echo -n "Starting php-fpm......"
$BINFILE -y $CFGFILE -g ${PIDFILE}
RETVAL=$?
echo
[[ $RETVAL -eq 0 ]] && touch $LOCKFILE
return $RETVAL
}
stop() {
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
echo "The php-fpm is not running."
return 1
fi
echo -n "Shutting down php-fpm......"
if [[ -f $PIDFILE ]]; then
kill -QUIT `cat ${PIDFILE}`
else
kill -QUIT `ps aux | grep php-fpm | awk '/master/{print $2}'`
fi
RETVAL=$?
echo
[[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE
return $RETVAL
}
restart() {
stop
sleep 1
while true
do
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
start
break
fi
sleep 1
done
RETVAL=$?
echo
return $RETVAL
}
reload() {
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
echo "The php-fpm is not running."
return 1
fi
echo -n $"Reloading php-fpm......"
if [[ -f $PIDFILE ]]; then
kill -USR2 `cat ${PIDFILE}`
else
kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'`
fi
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo "Usage: service php-fpm {start|stop|restart|reload}"
RETVAL=1
esac
exit $RETVAL
3.授权给该文件
#chmod -R 755 /etc/init.d/php-fpm4.将php-fpm将入启动服务
#chkconfig --add php-fpm
如果还是报“php-fpm 服务不支持 chkconfig”,先试试该脚本是否能整成启动php-fpm。
#/etc/init.d/php-fpm start
或
#./etc/init.d/php-fpm start
然后再执行
#chkconfig --add php-fpm
还是有错的话,那就是shell开头部分有问题了
### 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
改成下面试试:
还不行的话,可以修改 chkconfig为 chkconfig - 85 15试试,还不行就仔细看看chkconfig命令吧。
上面如果没有报错的情况下,那么就表示成功了。现在可以使用service来管理php-fpm啦.
# 启动
service php-fpm start
# 关闭
service php-fpm stop
# 重启
service php-fpm restart
# 重载
service php-fpm reload
#检查配置文件
service php-fpm configtest
以下是来源于格先生的博客说明:
配置php-fpm服务
php-fpm使用方法
脚本说明
以上量行代码有人会疑问他们到底是做什么的,'.'是source类似于程序中的include和require,将functions里面的方法全部倒入到这边,这边程序便可以使用,例如这边用到的daemon、status。第二行的network实际上就几行,如下
将他们作为变量赋值,判断网卡是否启动,如果你的nginx不走网卡,其实网络这段可以去掉.
start倒是报错,很不友好的shell就不用了,于是结合改了改,发现还是挺不错的。
分两步骤加深理解吧,在Centos中,php5.3以上应该都可以吧,我目前使用的是php5.6.7和centos6.5。理解下面两步骤,其它自启动服务都是接近该原理。
一.确定php安装的位置
第一步是要清楚你的php装在哪里,shell脚本需要用到运行的php-fpm,php-fpm.conf配置文件,php-fpm.pid等三个文件。
1.查找php安装位置:
#ps -ef | grep php或者 php -i 或者应用目录写 echo phpinfo();die;查看php安装目录.
2.得到需要的文件位置:
找到安装目录,可以php安装目录中找到sbin下面的php-fpm,在etc下面找到php-fpm.conf,vi php-fpm.conf查找 pid可以得到php-fpm.pid所在位置.
如我的:
/usr/local/php/sbin/php-fpm
/usr/local/php/etc/php-fpm.conf
var/run/php-fpm.pid
二.创建php-fpm自启动文件。
1.在/etc/init.d/下面创建 php-fpm
#touch /etc/init.d/php-fpm#vim /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
# Source function library.
. /etc/rc.d/init.d/functions
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
BINFILE="/usr/local/php/sbin/php-fpm"
CFGFILE="/usr/local/php/etc/php-fpm.conf"
PIDFILE="/var/run/php-fpm.pid"
LOCKFILE="/var/lock/php-fpm.lock"
RETVAL=0
start() {
[[ -x $BINFILE ]] || exit 5
[[ -f $CFGFILE ]] || exit 6
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -gt 0 ]]; then
echo "The php-fpm is already running."
return 1
fi
$BINFILE -t >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "The php-fpm configure has error."
return 1
fi
echo -n "Starting php-fpm......"
$BINFILE -y $CFGFILE -g ${PIDFILE}
RETVAL=$?
echo
[[ $RETVAL -eq 0 ]] && touch $LOCKFILE
return $RETVAL
}
stop() {
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
echo "The php-fpm is not running."
return 1
fi
echo -n "Shutting down php-fpm......"
if [[ -f $PIDFILE ]]; then
kill -QUIT `cat ${PIDFILE}`
else
kill -QUIT `ps aux | grep php-fpm | awk '/master/{print $2}'`
fi
RETVAL=$?
echo
[[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE
return $RETVAL
}
restart() {
stop
sleep 1
while true
do
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
start
break
fi
sleep 1
done
RETVAL=$?
echo
return $RETVAL
}
reload() {
if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then
echo "The php-fpm is not running."
return 1
fi
echo -n $"Reloading php-fpm......"
if [[ -f $PIDFILE ]]; then
kill -USR2 `cat ${PIDFILE}`
else
kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'`
fi
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo "Usage: service php-fpm {start|stop|restart|reload}"
RETVAL=1
esac
exit $RETVAL
3.授权给该文件
#chmod -R 755 /etc/init.d/php-fpm4.将php-fpm将入启动服务
#chkconfig --add php-fpm
如果还是报“php-fpm 服务不支持 chkconfig”,先试试该脚本是否能整成启动php-fpm。
#/etc/init.d/php-fpm start
或
#./etc/init.d/php-fpm start
然后再执行
#chkconfig --add php-fpm
还是有错的话,那就是shell开头部分有问题了
### 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
改成下面试试:
#=======================================================================================
# php-fpm - this script start and stop the php-fpm daemon
#
# chkconfig 35 on
# description: php-fpm is a FastCGI web server.
# processname: php-fpm
# config: /usr/local/php/etc/php-fpm.conf
# pidfile: /var/run/php-fpm.pid
#=======================================================================================
还不行的话,可以修改 chkconfig为 chkconfig - 85 15试试,还不行就仔细看看chkconfig命令吧。
上面如果没有报错的情况下,那么就表示成功了。现在可以使用service来管理php-fpm啦.
# 启动
service php-fpm start
# 关闭
service php-fpm stop
# 重启
service php-fpm restart
# 重载
service php-fpm reload
#检查配置文件
service php-fpm configtest
以下是来源于格先生的博客说明:
配置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使用方法
脚本说明
# 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不走网卡,其实网络这段可以去掉.
/etc/init.d/php-fpm
相关文章推荐
- CentOS6.3添加nginx php-fpm系统服务详细说明
- Linux_php-fpm自启动脚本(CentOS7中可用)
- php-fpm.conf详细说明
- php-fpm自启动脚本
- PHP中$_SERVER的详细参数与说明
- PHP 编写的 25个游戏脚本
- 网页实例:详细介绍用PHP来编写网页记数器
- 让我们来编写一些PHP实用的脚本
- java时间操作详细说明
- OpenGL累积缓存的操作函数详细说明
- 采集操作使用详细说明
- ANT启动脚本详细说明
- 编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等
- PHP header() 详细使用说明与使用心得
- php header 详细使用说明与使用心得第1/2页
- PHP 编写的 25个游戏脚本
- 用PHP脚本在Linux系统上读取输入和对文件进行操作
- DOS批处理脚本语言简介与详细说明
- 功能齐全的PHP发送邮件类代码附详细说明
- php addslashes 函数详细分析说明