1. 启用并优化PHP-FPM(替代mod_php)
PHP-FPM(FastCGI Process Manager)比传统的mod_php更高效,能更好地管理PHP进程,减少内存消耗。安装PHP-FPM(如sudo apt install php7.x-fpm),然后在Apache中配置FastCGI处理:在Apache配置文件(如/etc/apache2/apache2.conf或虚拟主机文件)中添加LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so,并通过<FilesMatch \.php$>指令将PHP请求转发至PHP-FPM(SetHandler "proxy:fcgi://localhost:9000")。同时,调整PHP-FPM的www.conf参数(如pm.max_children根据服务器内存设置,pm.start_servers/pm.min_spare_servers/pm.max_spare_servers优化进程池管理)。
2. 启用OPcache加速PHP脚本
OPcache通过缓存编译后的PHP脚本,避免重复解析,显著提升执行速度。安装OPcache扩展(如sudo apt install php-opcache),并在php.ini中启用:设置zend_extension=opcache.so、opcache.enable=1,调整内存分配(opcache.memory_consumption=128,根据服务器内存调整)、缓存文件数量(opcache.max_accelerated_files=4000,约为项目PHP文件数的1.5倍)和重新验证频率(opcache.revalidate_freq=60,生产环境可设为0以禁用实时检查)。
3. 优化Apache配置
KeepAlive On、MaxKeepAliveRequests 100(单次连接最大请求数)、KeepAliveTimeout 5(连接保持时间,单位秒)。prefork适用于非线程安全PHP,event/worker适用于线程安全版本)。以event模式为例,调整StartServers(初始进程数,如5)、MinSpareServers(最小空闲进程数,如5)、MaxSpareServers(最大空闲进程数,如10)、MaxClients(最大并发请求数,如150,根据内存计算:内存总量/单个Apache进程内存)。mod_deflate压缩文本类内容(HTML/CSS/JS),减少传输体积。在配置中添加<IfModule mod_deflate.c>,设置AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript。4. 使用缓存技术减轻服务器负载
sudo apt install redis-server)及PHP扩展(sudo apt install php-redis),在PHP代码中集成Redis客户端即可。mod_cache和mod_cache_disk缓存静态文件(CSS/JS/图片),避免重复处理。在配置中启用CacheRoot(如/var/cache/apache2/mod_cache_disk)、CacheEnable disk /,设置缓存目录层级(CacheDirLevels 2)和长度(CacheDirLength 1)。5. 优化PHP配置参数
调整php.ini中的关键参数以适应应用需求:
memory_limit:根据应用复杂度设置(如256M或512M,避免过小导致脚本终止);max_execution_time:生产环境设置为30-300秒(避免长时间运行的脚本占用资源);upload_max_filesize/post_max_size:根据文件上传需求设置(如50M,需大于实际上传文件大小);disable_functions:禁用危险函数(如exec、passthru,防止恶意代码执行)。6. 监控与持续优化
使用工具监控服务器性能,及时发现瓶颈:
top、htop查看CPU、内存使用情况,iotop查看磁盘IO;apachetop查看请求处理速度,server-status(需启用ExtendedStatus On)查看并发连接数;php-fpm status(需启用pm.status_path)查看PHP-FPM进程状态,使用New Relic、Blackfire等工具分析代码性能。