温馨提示×

centos php配置如何优化

小樊
32
2025-12-29 03:49:22
栏目: 编程语言

CentOS 下 PHP 配置优化实操指南

一 基线准备与模块安装

  • 更新系统与仓库,启用 EPELRemi(按需选择 PHP 版本,如 PHP 7.4):
    • sudo yum update -y
    • sudo yum install -y epel-release
    • sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    • sudo yum-config-manager --enable remi-php74
  • 安装常用模块(按应用增减):
    • sudo yum install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-bcmath php-zip php-curl
  • 确认配置文件路径与生效项:
    • php -i | grep “Loaded Configuration File”
    • 重启服务:sudo systemctl restart php-fpm

二 PHP-FPM 进程与资源调优

  • 进程管理模式选择(/etc/php-fpm.d/www.conf):
    • static:固定进程数,适合高稳定高并发;dynamic:按需伸缩,适合波动流量;ondemand:请求到来才创建,适合低流量/节省内存。
  • 关键参数建议(示例为 dynamic,按内存与负载计算后再上线):
    • pm = dynamic
    • pm.max_children = 50(上限,见下方“计算方法”)
    • pm.start_servers = 5
    • pm.min_spare_servers = 5
    • pm.max_spare_servers = 35
    • pm.max_requests = 500(防内存泄漏,周期性重启子进程)
    • request_terminate_timeout = 120(请求最大执行时间,视业务而定)
    • 监听与权限:listen = /run/php-fpm/www.sock;listen.owner = nginx;listen.group = nginx;listen.mode = 0660
  • 计算 max_children 的简易方法:
    • 公式:max_children ≈ (可用内存MB − 1GB) / 单进程内存占用MB
    • 例:可用 4GB 内存、单进程约 128MB ⇒ 约 24 个进程(适当留余量,结合压测微调)

三 php.ini 性能与安全关键项

  • 基础与执行:
    • memory_limit = 256M(按应用调大/调小)
    • max_execution_time = 300(长任务可适度放宽)
    • max_input_time = 60
  • 文件上传:
    • upload_max_filesize = 50M
    • post_max_size = 50M
  • 字节码缓存 OPcache(强烈建议启用):
    • [opcache]
    • opcache.enable = 1
    • opcache.memory_consumption = 128
    • opcache.interned_strings_buffer = 8
    • opcache.max_accelerated_files = 10000
    • opcache.revalidate_freq = 60
    • opcache.fast_shutdown = 1
  • 错误与日志(生产环境):
    • display_errors = Off
    • log_errors = On
    • error_log = /var/log/php_errors.log
  • 时区:
    • date.timezone = Asia/Shanghai
  • 安全加固(按需):
    • expose_php = Off
    • disable_functions = exec,passthru,shell_exec,system(禁用危险函数)
    • open_basedir = /var/www/html:/tmp(限制脚本访问目录)

四 Web 服务器与缓存协同优化

  • Nginx 与 PHP-FPM 联动示例:
    • location ~ .php$ {
      • include fastcgi_params;
      • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      • fastcgi_pass unix:/run/php-fpm/www.sock;
    • }
    • 重启:sudo systemctl restart nginx
  • Apache 与 PHP-FPM(mod_proxy_fcgi):
    • <FilesMatch .php$>
      • SetHandler “proxy:fcgi://unix:/run/php-fpm/www.sock|fcgi://localhost”
    • 重启:sudo systemctl restart httpd
  • 数据层缓存:
    • 安装并启用 Redis/Memcached 及对应 PHP 扩展(php-pecl-redis / php-pecl-memcached),在应用层使用缓存减轻数据库压力

五 验证 监控 与迭代

  • 配置生效与连通性验证:
    • 创建 /var/www/html/info.php:
    • 访问 http://服务器IP/info.php 检查 Loaded Configuration FileOPcache 等是否生效
  • 资源与日志监控:
    • 系统资源:top/htop、iostat、vmstat
    • PHP-FPM:启用 slowlog 与 request_slowlog_timeout = 10s,分析慢请求
    • 应用性能:New Relic、XHProf 等定位瓶颈
  • 变更流程与回滚:
    • 任何参数调整前先备份配置;先在测试环境压测与灰度;观察 502/504慢日志OOM 等指标,按结果迭代微调

0