温馨提示×

debian apache2怎优化

小樊
45
2026-10-12 07:16:24
栏目: 智能运维

在 Debian 上优化 Apache2,通常从性能、安全、模块、系统层面几方面入手。下面给你一套实用优化清单(适用于 Debian 10/11/12)。


一、选择并切换 MPM(最重要)

Apache 有三种 MPM:

  • prefork:稳定,但耗内存(兼容老 PHP)
  • worker:多线程,性能较好
  • event(推荐):高并发最佳(Debian 默认)

查看当前 MPM

apache2ctl -V | grep -i mpm

切换为 event(推荐)

a2dismod mpm_prefork
a2enmod mpm_event
systemctl restart apache2

⚠️ 如果用 mod_php,不能用 event,只能 prefork
✅ 推荐用 PHP-FPM


二、使用 PHP-FPM(强烈推荐)

安装

apt install php-fpm
a2enmod proxy_fcgi setenvif
a2enconf php-fpm

关闭 mod_php(如已启用)

a2dismod php*

三、调整 MPM 配置(核心)

编辑:

nano /etc/apache2/mods-available/mpm_event.conf

示例(2G~4G 内存服务器):

<IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   3000
</IfModule>

重载:

systemctl restart apache2

四、开启压缩(省带宽)

a2enmod deflate

编辑:

nano /etc/apache2/conf-available/deflate.conf

加入:

AddOutputFilterByType DEFLATE text/html text/css application/javascript

五、开启缓存(提速)

浏览器缓存

a2enmod expires
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
</IfModule>

六、禁用不必要的模块

查看:

apache2ctl -M

常见可禁用:

a2dismod status autoindex cgi negotiation

七、关闭 KeepAlive(高并发场景)

nano /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

高并发建议 KeepAliveTimeout 2


八、系统层面优化

文件描述符

ulimit -n 65535

内核参数(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
sysctl -p

九、使用 HTTPS + HTTP/2

a2enmod http2 ssl

虚拟主机:

Protocols h2 http/1.1

十、监控与压测

apt install apache2-utils
ab -n 1000 -c 100 http://localhost/

推荐组合(最佳实践)

✅ Debian + Apache2 (event) + PHP-FPM + HTTP/2 + deflate + expires

如果你愿意,可以告诉我:

  • 服务器内存
  • 是否 WordPress / Laravel
  • 访问量

我可以给你精准配置。

0 踩