在CentOS系统上如何优化LAMP环境以提升WordPress性能?

在 CentOS 系统上优化 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境以提升 WordPress 性能,需要从操作系统、Web 服务器、数据库、PHP 和 WordPress 应用层多个维度协同调优。以下是经过验证的实用步骤:


一、操作系统层面优化(CentOS)

  1. 启用 I/O 调度器优化

    # 查看当前调度器
    cat /sys/block/sda/queue/scheduler
    # 推荐设置为 deadline(对随机读写友好)或 none(SSD)
    echo "deadline" > /sys/block/sda/queue/scheduler
    # 永久生效:编辑 /etc/rc.d/rc.local 添加上述命令
  2. 调整内核参数
    编辑 /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

  3. 关闭不必要的服务

    sudo systemctl disable firewalld    # 如使用 iptables/nftables 替代
    sudo systemctl stop NetworkManager  # 若仅用 network-scripts

二、Apache 优化

  1. 安装并配置 mod_pagespeedphp-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>
  2. 调整 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
  3. 禁用 .htaccess 解析(提升性能)
    将 WordPress 规则移至主配置 /etc/httpd/conf.d/wp.conf

    <Directory /var/www/html>
       AllowOverride None
       Require all granted
    </Directory>

    然后手动写入必要重写规则(避免每请求解析 .htaccess)。


三、MySQL/MariaDB 优化

  1. 安装 MariaDB(比 MySQL 更轻量高效)

    sudo yum install mariadb-server mariadb
    sudo systemctl enable --now mariadb
  2. 优化配置文件 /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%)

  3. 定期维护

    mysqlcheck -A --optimize --analyze

四、PHP 优化(FPM 模式)

  1. 安装 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
  2. 优化 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
  3. 配置 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
  4. Apache 与 PHP-FPM 集成
    确保 Apache 使用 proxy_fcgi 模块:

    <FilesMatch .php$>
       SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>

五、WordPress 应用层优化

  1. 启用对象缓存(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);
  2. 压缩图片 & 懒加载

    • 使用插件如 SmushShortPixel 自动压缩上传图像。
    • 启用 HTML5 原生 loading="lazy"(WordPress 5.5+ 默认支持)。
  3. 减少插件数量 & 代码优化

    • 禁用未使用插件,删除主题中冗余代码。
    • 使用轻量主题(如 GeneratePress、Astra)。
    • 启用 WP Super CacheLiteSpeed Cache(若用 LiteSpeed 服务器)。
  4. 数据库清理

    • 定期清理修订版、垃圾评论、过期临时表:
      DELETE FROM wp_posts WHERE post_type = 'revision';
      DELETE FROM wp_comments WHERE comment_approved = 'trash';
    • 使用插件 WP-Optimize 自动化此过程。

六、监控与持续改进

  • 使用 htop, iostat, vmstat 实时监控系统资源。
  • 启用 New RelicQuery 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 倍
  • 数据库响应延迟显著降低

💡 提示:每次只调整一项参数并测试效果,避免“过度优化”导致不稳定。生产环境务必先备份数据!