> 文章列表 > php-fpm设置开机启动

php-fpm设置开机启动

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详解