php-fpm设置开机启动
看了nginx和redis的shell启动脚本,发现服务的开启和关闭其实就是操作服务进程号,那么给php服务也写个shell脚本,也能实现service start 和 stop
进入Linux服务的初始化目录
[root@1 ]# cd /etc/init.d/# 或者[root@1 init.d]# cd /etc/rc.d/init.d/
创建phpfpmd进程脚本(进程控制脚本规范上默认都加后缀d)
vim phpfpmd
#!/bin/bash
# chkconfig: 2345 90 10
# description: php-fpm is web server#服务在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。PHP_INI="/etc/php.ini"
PHP_FPM="/usr/local/php/sbin/php-fpm"
PHP_FPM_CONF="/usr/local/php/etc/php-fpm.conf"#获取php-fpm的所有进程号
process=`pgrep php-fpm`#echo "php-fpm process: $process"case "$1" instart)if [ -n "$process" ]thenecho ">>> php-fpm process is already running"elseecho ">>> Starting php-fpm ..."$PHP_FPM -c $PHP_INI -y $PHP_FPM_CONFfi;;stop)if [ ! -n "$process" ]thenecho ">>> php-fpm process is not running"elseecho ">>> php-fpm stopping ..."kill -15 $processwhile [ ! -n `pgrep php-fpm` ]doecho ">>> Waiting for php-fpm to shutdown ..."sleep 1doneecho ">>> php-fpm stopped"fi;;*)echo ">>> Please use start or stop as first argument";;
esac
第一行,说明shell的运行环境,有些服务器默认是sh,dbash,和 bash 还是有区别的,比如:dbash相等只支持一个=,而bash里可以用==表示,具体参考附录资料。
第二行和第三行,必须加的,因为chkconfig无法识别php-fpm服务,要手动加到运行级别中。
还有个知识点,关闭服务的命令一般用-15,由服务自己发起关闭,保证没有未处理完的进程在运行。
验证脚本
[root@init.d]# ./phpfpmd start
>>> Starting php-fpm ...[root@init.d]# ./phpfpmd start
>>> php-fpm process is already running[root@init.d]# ./phpfpmd stop
>>> php-fpm stopping ...
>>> php-fpm stopped[root@init.d]# ./phpfpmd stop
>>> php-fpm process is not running
也可以用service
[~]$ sudo service phpfpmd stop
[sudo] user 的密码:
>>> php-fpm stopping ...
>>> php-fpm stopped[~]$ sudo service phpfpmd start
>>> Starting php-fpm ...
将phpfpmd加入服务运行级别
[root@1 init.d]# chkconfig phpfpmd on
[root@1 init.d]# chkconfig --list注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
nginx 0:关 1:关 2:开 3:开 4:开 5:开 6:关
phpfpmd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redisd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
重启机器
[root@1 init.d]# reboot
查看服务是否开启
[~]$ ps -ef | grep php-fpm
root 3154 1 0 10:11 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
newton 3155 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3156 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3157 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3158 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3159 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3161 3085 0 10:11 pts/1 00:00:00 grep --color=auto php-fpm
附录资料
linux中的sh、dash、bash的区别
LINUX系统的7种运行级别
redis_init_script详解