在 CentOS 系统上优化 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境以提升 WordPress 性能,需要从操作系统、Web 服务器、数据库、PHP 和 WordPress 应用层多个维度协同调优。以下是经过验证的实用步骤:
一、操作系统层面优化(CentOS)
-
启用 I/O 调度器优化
# 查看当前调度器 cat /sys/block/sda/queue/scheduler # 推荐设置为 deadline(对随机读写友好)或 none(SSD) echo "deadline" > /sys/block/sda/queue/scheduler # 永久生效:编辑 /etc/rc.d/rc.local 添加上述命令 -
调整内核参数
编辑/etc/sysctl.conf,添加:net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 8192 vm.swappiness = 10 vm.vfs_cache_pressure = 50应用:
sudo sysctl -p -
关闭不必要的服务
sudo systemctl disable firewalld # 如使用 iptables/nftables 替代 sudo systemctl stop NetworkManager # 若仅用 network-scripts
二、Apache 优化
-
安装并配置
mod_pagespeed或php-fpm+nginx(可选)- 若坚持用 Apache,启用关键模块:
sudo yum install mod_deflate mod_headers mod_expires mod_rewrite mod_ssl -
在
/etc/httpd/conf.d/performance.conf中配置:<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 month" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 1 year" </IfModule> <FilesMatch ".(ico|jpg|jpeg|png|gif|svg|js|css|woff|woff2)$"> Header set Cache-Control "max-age=31536000, public" </FilesMatch>
- 若坚持用 Apache,启用关键模块:
-
调整 Apache MPM 设置(推荐 Prefork → Worker 或 Event)
- 修改
/etc/httpd/conf.modules.d/00-mpm.conf:LoadModule mpm_event_module modules/mod_mpm_event.so Include conf.modules.d/00-mpm-event.conf - 编辑
/etc/httpd/conf/mpm_event.conf:StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 0
- 修改
-
禁用
.htaccess解析(提升性能)
将 WordPress 规则移至主配置/etc/httpd/conf.d/wp.conf:<Directory /var/www/html> AllowOverride None Require all granted </Directory>然后手动写入必要重写规则(避免每请求解析 .htaccess)。
三、MySQL/MariaDB 优化
-
安装 MariaDB(比 MySQL 更轻量高效)
sudo yum install mariadb-server mariadb sudo systemctl enable --now mariadb -
优化配置文件
/etc/my.cnf.d/server.cnf[mysqld] basedir=/usr datadir=/var/lib/mysql port=3306 socket=/var/lib/mysql/mysql.sock key_buffer_size = 128M max_allowed_packet = 64M thread_stack = 192K thread_cache_size = 8 query_cache_limit = 2M query_cache_size = 64M query_cache_type = 1 table_open_cache = 400 innodb_buffer_pool_size = 512M innodb_log_file_size = 64M innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_io_capacity = 2000 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = 1 skip-name-resolve⚠️ 根据内存总量调整
innodb_buffer_pool_size(建议占物理内存 50%~70%) -
定期维护
mysqlcheck -A --optimize --analyze
四、PHP 优化(FPM 模式)
-
安装 PHP-FPM
sudo yum install php-fpm php-mysqlnd php-gd php-json php-opcache php-intl php-mbstring sudo systemctl enable --now php-fpm -
优化
php.ini
编辑/etc/php.ini:memory_limit = 256M max_execution_time = 60 post_max_size = 32M upload_max_filesize = 32M opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.validate_timestamps=1 -
配置 PHP-FPM 池(
/etc/php-fpm.d/www.conf)pm = dynamic pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 -
Apache 与 PHP-FPM 集成
确保 Apache 使用proxy_fcgi模块:<FilesMatch .php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
五、WordPress 应用层优化
-
启用对象缓存(Redis/Memcached)
sudo yum install redis php-pecl-redis sudo systemctl enable --now redis安装插件:Redis Object Cache,并在
wp-config.php中添加:define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PORT', 6379); -
压缩图片 & 懒加载
- 使用插件如 Smush 或 ShortPixel 自动压缩上传图像。
- 启用 HTML5 原生
loading="lazy"(WordPress 5.5+ 默认支持)。
-
减少插件数量 & 代码优化
- 禁用未使用插件,删除主题中冗余代码。
- 使用轻量主题(如 GeneratePress、Astra)。
- 启用 WP Super Cache 或 LiteSpeed Cache(若用 LiteSpeed 服务器)。
-
数据库清理
- 定期清理修订版、垃圾评论、过期临时表:
DELETE FROM wp_posts WHERE post_type = 'revision'; DELETE FROM wp_comments WHERE comment_approved = 'trash'; - 使用插件 WP-Optimize 自动化此过程。
- 定期清理修订版、垃圾评论、过期临时表:
六、监控与持续改进
- 使用
htop,iostat,vmstat实时监控系统资源。 - 启用 New Relic 或 Query Monitor 插件分析慢查询。
- 定期运行
mysqltuner.pl获取调优建议:sudo yum install perl-TermReadKey perl-IO-Socket-SSL wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl sudo perl mysqltuner.pl
补充建议(进阶)
- 考虑迁移到 Nginx + PHP-FPM:Nginx 处理静态资源更高效,适合高并发场景。
- CDN 提速:接入 Cloudflare 或阿里云 CDN 减轻源站压力。
- HTTP/2 支持:Apache 需启用
mod_http2;Nginx 默认支持。 - 容器化部署:未来可考虑 Docker + Kubernetes 实现弹性伸缩。
通过以上优化,典型 WordPress 站点在 CentOS + LAMP 环境下可实现:
- 首屏加载时间 ↓ 40%~60%
- QPS 提升 2~5 倍
- 数据库响应延迟显著降低
💡 提示:每次只调整一项参数并测试效果,避免“过度优化”导致不稳定。生产环境务必先备份数据!
PHPWP博客