在 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.1为remi-7.4、remi-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-opcache、php-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.owner和listen.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 是否正常工作。
✅ 四、安全与优化建议
-
禁用危险函数
编辑/etc/php.ini,设置:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source -
限制上传大小
upload_max_filesize = 20M post_max_size = 25M max_execution_time = 60 memory_limit = 128M -
启用 OPcache
确保php.ini中已启用:opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 -
防火墙放行端口(如使用 TCP)
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
✅ 五、常见问题排查
| 问题 | 解决方法 |
|---|---|
Connection refused |
检查 www.conf 中 listen 路径是否正确,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 的核心步骤:
- 启用合适 PHP 模块流(Remi 推荐)
- 安装
php-fpm及必要扩展 - 配置
www.conf(监听方式、用户、权限) - 与 Nginx/Apache 集成
- 测试并优化安全设置
如需更高性能,可考虑使用 PHP-FPM + Nginx + Redis/Memcached 组合,并根据负载调整 pm.* 参数。
如有特定 PHP 版本或框架需求(如 Laravel、WordPress),可进一步定制配置。
云小栈