在TencentOS Server 3.1上如何安装和配置php-fpm?

在 TencentOS Server 3.1(基于 CentOS 8/Anolis OS 体系构建,采用 RPM 包管理)上安装和配置 PHP-FPM,主要依赖系统自带的软件源或腾讯云镜像源。以下是标准且合规的操作流程:

1. 更新系统并安装必要工具

首先确保系统基础组件是最新的,避免依赖冲突。

sudo dnf update -y
# 如果使用的是旧版兼容模式,也可使用 yum update -y

2. 安装 PHP-FPM 及相关模块

TencentOS 默认的软件源中已包含 PHP 8.x 版本(具体版本视官方源更新情况而定)。直接安装 php-fpm 及其常用扩展即可。

# 安装 PHP-FPM 核心及常用扩展(如 mysql, gd, curl 等)
sudo dnf install -y php-fpm php-mysqlnd php-gd php-curl php-mbstring php-xml php-opcache

# 确认安装成功
rpm -qa | grep php

注意:如果你需要特定版本的 PHP(例如 7.4 或 8.0),可能需要添加额外的第三方仓库(如 Remi 源),但建议优先使用系统自带源以保证内核与用户态的兼容性稳定。

3. 启动并设置开机自启

安装完成后,立即启动服务并配置开机自启。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl status php-fpm

若状态显示为 active (running),则说明服务正常。

4. 配置文件位置与修改

TencentOS Server 3.1 的 PHP-FPM 主配置文件通常位于 /etc/php.ini,而 FPM 专用的进程管理、监听端口等配置位于 /etc/php-fpm.d/ 目录下。

A. 全局配置 (/etc/php.ini)

使用编辑器打开该文件调整参数,例如时区设置:

sudo vim /etc/php.ini

找到 date.timezone 行,取消注释并设置为 Asia/Shanghai:

date.timezone = Asia/Shanghai

保存退出。

B. FPM 池配置 (/etc/php-fpm.d/www.conf)

这是最常用的配置项,用于控制 Nginx/Apache 如何与 PHP 交互。

sudo vim /etc/php-fpm.d/www.conf

关键配置项检查:

  1. 监听方式
    • 如果使用 Nginx,通常保持默认的 Unix Socket 模式(推荐,性能更好):
      listen = /run/php-fpm/www.sock
    • 如果需要 TCP 连接(较少见):
      listen = 127.0.0.1:9000
  2. 权限设置
    确保 socket 文件或端口对 Web 服务器用户(通常是 nginxwww-data)可访问。如果是 Socket 模式,需检查 listen.ownerlisten.group 是否与 Web 服务器用户一致。

    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660

    (注:如果你的 Web 服务器用户是 apache,请相应修改)

  3. 进程管理
    根据服务器内存调整 pm.max_children。对于轻量级应用,默认值通常足够;高并发场景需调大。

    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35

5. 验证与测试

重启 PHP-FPM 使配置生效:

sudo systemctl restart php-fpm

创建一个简单的测试文件来验证环境:

cat <<EOF | sudo tee /usr/share/nginx/html/info.php > /dev/null
<?php
phpinfo();
?>
EOF

(注:Web 根目录路径视你安装的 Web 服务器而定,Nginx 通常为 /usr/share/nginx/html)

此时,通过浏览器访问 http://<你的服务器IP>/info.php,若能显示 PHP 信息页面,说明安装配置成功。

6. 防火墙与安全组配置

在腾讯云服务器控制台(CVM)的安全组中,确保放行 80 (HTTP) 或 443 (HTTPS) 端口。PHP-FPM 本身通常不直接对外暴露端口(除非使用了 TCP 监听且未做反向X_X),因此无需在安全组开放 9000 端口,以符合最小化安全原则。

常见问题排查

  • 权限错误:如果 Nginx 无法读取 PHP-FPM 生成的 socket,检查 ls -l /run/php-fpm/www.sock 的属主属组,确保与 Nginx 运行用户一致。
  • 超时问题:在高负载下出现 "502 Bad Gateway",通常是因为 PHP 执行时间过长导致 FPM 进程被杀,需调整 request_terminate_timeout 或增加 pm.max_children
  • SELinux:虽然 TencentOS 默认可能关闭了 SELinux 或处于宽容模式,如果遇到阻碍,可使用 setsebool -P httpd_can_network_connect 1 等命令调整上下文(视具体报错而定)。

以上步骤适用于标准的 TencentOS Server 3.1 生产环境部署。如有特殊业务需求(如多版本共存),建议考虑使用容器化方案(Docker)进行隔离。

未经允许不得转载:CLOUD云枢 » 在TencentOS Server 3.1上如何安装和配置php-fpm?