加油
努力

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

在 TencentOS Server 3.1(基于 CentOS/RHEL 8 生态)上安装和配置 PHP-FPM,通常推荐使用官方或 TUNA 镜像提供的软件源。以下是详细步骤:


✅ 一、安装 PHP-FPM

1. 启用 EPEL 和 Remi 仓库(可选但推荐)

TencentOS Server 默认包含 PHP 模块,但版本可能较旧。如需更新版本(如 PHP 7.4/8.0/8.1),建议启用 Remi 仓库

# 安装 EPEL 和 Remi 仓库
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

# 启用 Remi 的 PHP 模块流(以 PHP 8.1 为例)
sudo dnf module reset php
sudo dnf module enable php:remi-8.1 -y

💡 其他版本替换 remi-8.1remi-7.4remi-8.0 等。

2. 安装 PHP-FPM 及相关扩展

sudo dnf install -y php-fpm php-cli php-mysqlnd php-gd php-mbstring php-xml php-json php-zip

根据需求添加其他扩展,如 php-opcachephp-intl 等。

3. 启动并设置开机自启

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

4. 验证安装

php-fpm -v
systemctl status php-fpm

✅ 二、配置 PHP-FPM

1. 编辑主配置文件

主配置文件位于 /etc/php-fpm.d/www.conf(注意:不是 php.ini)。

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

关键配置项:

; 监听方式:Unix socket 或 TCP
listen = /run/php-fpm/www.sock
; 或
; listen = 127.0.0.1:9000

; 用户和组(需与 Web 服务器一致,如 nginx 使用 www-data 或 nginx)
user = apache
group = apache

; 权限设置
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

; 进程管理
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

⚠️ 若使用 Nginx,确保 listen.ownerlisten.group 与 Nginx worker 用户一致(通常是 nginx)。

2. 创建日志目录(可选)

sudo mkdir -p /var/log/php-fpm
sudo chown nginx:nginx /var/log/php-fpm   # 或 apache:apache

3. 重启 PHP-FPM 使配置生效

sudo systemctl restart php-fpm

✅ 三、与 Nginx 集成(示例)

1. 安装 Nginx(若未安装)

sudo dnf install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

2. 配置 Nginx 站点

编辑站点配置文件,例如 /etc/nginx/conf.d/default.conf 或新建 /etc/nginx/conf.d/myapp.conf

server {
    listen 80;
    server_name example.com;
    root /usr/share/nginx/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;  # 或 127.0.0.1:9000
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

3. 测试 Nginx 配置并重启

sudo nginx -t
sudo systemctl reload nginx

4. 创建测试文件

echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php

访问 http://your-server-ip/info.php 验证 PHP-FPM 是否正常工作。


✅ 四、安全与优化建议

  1. 禁用危险函数
    编辑 /etc/php.ini,设置:

    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
  2. 限制上传大小

    upload_max_filesize = 20M
    post_max_size = 25M
    max_execution_time = 60
    memory_limit = 128M
  3. 启用 OPcache
    确保 php.ini 中已启用:

    opcache.enable=1
    opcache.memory_consumption=128
    opcache.max_accelerated_files=10000
  4. 防火墙放行端口(如使用 TCP)

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload

✅ 五、常见问题排查

问题 解决方法
Connection refused 检查 www.conflisten 路径是否正确,Nginx 配置是否匹配
Permission denied on socket 确保 listen.owner/group 与 Nginx 用户一致,socket 权限为 0660
PHP 不执行,直接下载 检查 Nginx 是否缺少 location ~ .php$
502 Bad Gateway PHP-FPM 未运行或配置错误,查看 journalctl -u php-fpm 日志

查看日志:

sudo journalctl -u php-fpm -f
sudo tail -f /var/log/php-fpm/error.log

✅ 总结

在 TencentOS Server 3.1 上安装 PHP-FPM 的核心步骤:

  1. 启用合适 PHP 模块流(Remi 推荐)
  2. 安装 php-fpm 及必要扩展
  3. 配置 www.conf(监听方式、用户、权限)
  4. 与 Nginx/Apache 集成
  5. 测试并优化安全设置

如需更高性能,可考虑使用 PHP-FPM + Nginx + Redis/Memcached 组合,并根据负载调整 pm.* 参数。

如有特定 PHP 版本或框架需求(如 Laravel、WordPress),可进一步定制配置。

云服务器