1. 安装与基础配置
在CentOS上安装PHP-FPM需通过yum包管理器完成,优先添加EPEL仓库以确保版本兼容性:
sudo yum install epel-release -y
sudo yum install php-fpm -y
安装完成后,启动服务并设置开机自启:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
默认配置文件路径为/etc/php-fpm.conf(全局配置)和/etc/php-fpm.d/www.conf(池配置),修改前建议备份原文件。
2. 进程管理优化(核心参数调整)
PHP-FPM的进程管理模式推荐使用dynamic(动态调整),可根据负载自动伸缩进程数量,避免内存浪费或不足。关键参数设置如下:
pm.max_children:最大子进程数,需根据服务器内存计算(公式:(可用内存 - 1G) / 单个PHP进程内存,单个进程内存可通过ps aux | grep php-fpm | awk '{print $6}'估算,单位MB);pm.start_servers:启动时的子进程数,建议设为pm.max_children / 4 + 1(如pm.max_children=50则设为13);pm.min_spare_servers/pm.max_spare_servers:最小/最大空闲进程数,建议设为CPU核心数的1-2倍(如4核CPU设为4-8);pm.max_requests:每个子进程处理的最大请求数(如500),超过后自动重启,防止内存泄漏。3. OPcache加速(必选优化)
OPcache可缓存编译后的PHP脚本,减少重复解析时间,显著提升性能。安装并启用步骤如下:
sudo yum install php-opcache -y
编辑/etc/php.ini,添加或修改以下配置:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128 # 缓存内存大小(MB,根据服务器内存调整)
opcache.interned_strings_buffer=8 # 内部字符串缓存大小
opcache.max_accelerated_files=4000 # 最大加速文件数(需大于项目文件总数)
opcache.revalidate_freq=60 # 文件修改检查频率(秒,生产环境建议设为60以上)
opcache.fast_shutdown=1 # 快速关闭,提升重启速度
重启PHP-FPM使配置生效:sudo systemctl restart php-fpm。
4. Web服务器集成(Nginx/Apache配置)
编辑站点配置文件(如/etc/nginx/conf.d/example.conf),添加PHP处理块:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock; # 确保路径与www.conf中的listen一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
启用mod_proxy_fcgi模块,编辑虚拟主机配置(如/etc/httpd/conf.d/example.conf):
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
修改后重启Web服务器:sudo systemctl restart nginx(或httpd)。
5. 日志与监控
启用PHP-FPM慢日志,记录执行时间超过阈值的请求,帮助定位性能瓶颈:
在/etc/php-fpm.d/www.conf中添加:
request_slowlog_timeout = 5s # 慢请求阈值(秒)
slowlog = /var/log/php-fpm/www-slow.log # 慢日志路径
开启错误日志,便于排查问题:
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
使用监控工具(如top、htop、vmstat)定期检查PHP-FPM进程数、内存使用率;或通过php-fpm status命令(需开启pm.status_path)查看实时状态。
6. 安全加固
禁用危险PHP函数,防止恶意利用:
在/etc/php.ini中添加:
disable_functions = exec,passthru,shell_exec,system,chroot,escapeshellcmd,escapeshellarg
注意:若项目需要系统命令(如某些CMS的状态检测),需保留对应函数。
设置合理的文件权限,避免敏感信息泄露:
sudo chown -R nginx:nginx /var/www/html # 假设Web用户为nginx
sudo chmod -R 755 /var/www/html
定期更新系统和软件包,修复安全漏洞:
sudo yum update -y
```。
**7. 缓存与扩展优化**
使用Redis或Memcached缓存数据库查询结果,减少数据库负载(需安装对应扩展,如`php-pecl-redis`)。
调整PHP会话存储方式,将会话保存到内存或Redis中(修改`/etc/php.ini`):
```ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
优化数据库查询,使用索引、避免SELECT *、合理设计表结构,降低数据库压力。