Apache PHP运行环境优化实操指南
一 架构与运行模式选择
sudo a2enmod rewrite proxy proxy_fcgisudo a2enmod mpm_event && sudo a2dismod mpm_prefork(视系统支持情况执行)sudo systemctl restart apache2 php7.x-fpm/etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.modules.d/ 中确保加载:mod_proxy.so、mod_proxy_fcgi.so/etc/httpd/conf.modules.d/00-mpm.conf,启用 mpm_event 并注释 mpm_prefork)sudo systemctl restart httpd php-fpm二 Apache关键配置
KeepAlive On、MaxKeepAliveRequests 100、KeepAliveTimeout 5KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Timeout 30
MaxRequestWorkers 150
每次修改后执行:sudo systemctl reload apache2(或 sudo systemctl reload httpd)以平滑生效。
三 PHP与PHP-FPM优化
/etc/php/7.x/fpm/php.ini):zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 30s
memory_limit = 128M
max_execution_time = 30
upload_max_filesize = 50M
post_max_size = 50M
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
四 部署与路由配置示例
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
sudo systemctl restart apache2 php7.x-fpm(或 sudo systemctl restart httpd php-fpm)。五 监控验证与持续调优
top、htop、iotopab(Apache Bench)、wrkpm.status_path 并在安全网段访问,观察 active processes、idle processes、slow requests/var/log/apache2/access.log、/var/log/apache2/error.log(或 /var/log/httpd/)slowlog 与 request_slowlog_timeout)