Linux下为PHP 5.4配置系统级启动脚本
在Linux环境中管理PHP-FPM时,使用标准的/etc/init.d/脚本可以提供更直观的服务控制体验。本文将详细介绍如何为PHP 5.4创建并配置启动脚本,确保系统能够准确识别进程状态并完成重启或停止操作。
准备工作:确认配置文件参数
在创建服务脚本之前,必须明确php-fpm.conf中定义的关键路径,特别是PID文件和日志文件的存放位置。这些路径将在后续的Shell脚本中被硬编码调用,路径错误会导致脚本无法找到运行中的进程。
第1步:修改php-fpm.conf配置
目的:确保php-fpm生成的PID文件和日志符合预期位置,便于脚本读取和监控。
入口:访问服务器终端,编辑 /usr/local/php/etc/php-fpm.conf(若安装路径不同请相应调整)。
动作:找到并确认以下两项配置的绝对路径:
- pid = run/php-fpm.pid:默认前缀通常为 /usr/local/php/var。
- error_log = log/php-fpm.log:记录错误信息的日志位置。
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
pid = run/php-fpm.pid
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /usr/local/php/var
; Default Value: log/php-fpm.log
error_log = log/php-fpm.log
完成判断:保存配置文件后,路径信息已准备就绪。
核心步骤:创建服务管理脚本
接下来,我们将创建一个位于 /etc/init.d/ 目录下的Bash脚本。该脚本利用解析出的PID文件路径,实现对php-fpm进程的精确控制,包括检测进程是否存在、发送信号以及强制杀除残留进程。
第2步:创建 /etc/init.d/php 文件
目的:建立标准化的服务启动接口,支持start、stop、restart三个常用参数。
入口:使用文本编辑器创建文件 /etc/init.d/php。
动作:输入以下脚本代码。请注意,脚本中的 phpfpm 变量需指向实际的二进制文件路径,而 pid 变量需对应第一步中确定的完整PID路径。
root@aliyun:~# cat /etc/init.d/php
#!/bin/bash
#Author:iranw
#E-mail:wang_wenguan#yeah.net
#Website:http://www.phpno.com
# pid file
pid="/usr/local/php/var/run/php-fpm.pid"
# php-fpm path&file
phpfpm="/usr/local/php/sbin/php-fpm"
param=$1
# 获取包含grep关键词的行数作为进程存在性的粗略判断
phpnum=`ps -ef | grep php-fpm | wc -l`
if [ "$param" = "stop" ]; then
if [ "$phpnum" = "1" ]; then
echo "Php process does not exist."
exit 1
fi
kill `cat $pid`
echo "Close php processes. OK"
exit 1
fi
if [ "$param" = "start" ]; then
if [ "$phpnum" != "1" ]; then
echo "Php process exist."
exit 1
fi
$phpfpm
echo "Open php processes. OK"
exit 1
fi
if [ "$param" = "restart" ]; then
if [ "$phpnum" = "1" ]; then
echo "Php process does not exist. Stop Failed."
else
# 先正常终止主进程
kill `cat $pid`
# 遍历并强制杀死所有残留子进程,防止僵死
for i in `ps -ef | grep php-fpm | grep -v grep | awk {'print $2'}`
do
kill -9 $i
echo "Kill $i successed."
done
echo "Close php processes. OK"
fi
# 重新开启服务
$phpfpm
if [ "$phpnum" != "1" ]; then
echo "Open php processes. OK"
else
echo "Open php processes. Failed."
fi
exit 1
fi
重要参数说明:脚本中使用了 grep -v grep 来避免将当前查找进程自身误判为php-fpm进程。在restart操作中,增加了循环强制kill的逻辑,以应对某些情况下php-fpm未完全退出的问题。
第3步:赋予脚本可执行权限
目的:让系统管理员能够通过命令行直接执行该脚本。
入口:服务器终端。
动作:执行chmod命令。
#chmod +x /etc/init.d/php
完成判断:执行 ls -l /etc/init.d/php 可以看到文件拥有 x (execute) 权限。
验证与排错
查看执行结果
现在可以通过以下命令测试脚本功能:
/etc/init.d/php start:启动PHP-FPM。/etc/init.d/php stop:停止PHP-FPM。/etc/init.d/php restart:重启PHP-FPM。
在实际操作中,观察终端输出的提示信息(如 "Open php processes. OK")是判断脚本是否按预期运行的最直观方式。如果出现权限拒绝错误,请确认是否为root用户操作;如果提示进程不存在,请再次核对 pid 文件中记录的进程ID是否与 ps -ef 中显示的相符。
总结
以上便是Linux环境下为PHP 5.4配置启动脚本的详细内容。该方法通过自定义bash逻辑实现了对php-fpm生命周期的灵活掌控,特别适合需要快速重启服务或排查僵尸进程的生产环境场景。更多关于服务器基础运维的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













