Linux下为PHP 5.4配置系统级启动脚本

咖啡半糖
咖啡半糖
发布时间:2026-10-14| 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生命周期的灵活掌控,特别适合需要快速重启服务或排查僵尸进程的生产环境场景。更多关于服务器基础运维的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。