温馨提示×

如何优化debian apache2

小樊
43
2026-09-27 15:49:23
栏目: 智能运维

下面从系统、Apache 配置、模块、安全、缓存、监控几个层面,系统性地讲一下 Debian + Apache2 的优化方法。适用于生产服务器(非本地开发玩具)。


一、系统层面优化(基础)

1. 系统更新

apt update && apt upgrade -y

保持内核、OpenSSL、Apache 为稳定新版本。

2. 文件描述符限制

编辑:

/etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

并确认:

ulimit -n

3. 禁用不必要服务

systemctl disable bluetooth
systemctl disable cups

减少资源占用。


二、Apache 核心配置优化

配置文件位置(Debian):

  • 主配置:/etc/apache2/apache2.conf
  • 虚拟主机:/etc/apache2/sites-enabled/
  • 模块配置:/etc/apache2/mods-enabled/

1. MPM 选择(非常关键)

查看当前 MPM:

apachectl -V | grep MPM

推荐:

  • 静态内容 / 高并发 → event
  • PHP(非 FPM) → prefork
  • PHP-FPM → event

切换 MPM(示例 event):

a2dismod mpm_prefork
a2enmod mpm_event
systemctl restart apache2

2. MPM 参数优化(示例:event)

编辑:

/etc/apache2/mods-enabled/mpm_event.conf

示例(2 核 4G):

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

公式参考:

MaxRequestWorkers = ThreadsPerChild × ServerLimit

三、KeepAlive 与超时优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Timeout 30

说明:

  • KeepAlive On:减少 TCP 握手
  • KeepAliveTimeout 不宜过大(5s 足够)
  • Timeout 防止慢连接拖死 Apache

四、模块精简(重要)

查看已启用模块

apache2ctl -M

常见可禁用模块

a2dismod autoindex
a2dismod status
a2dismod cgi
a2dismod negotiation

⚠️ 保留:

  • rewrite
  • ssl
  • headers
  • deflate
  • proxy(如使用)

五、开启压缩(gzip)

a2enmod deflate

示例配置:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
    AddOutputFilterByType DEFLATE application/json
</IfModule>

六、开启缓存(浏览器缓存)

a2enmod expires
a2enmod headers
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

七、PHP 优化(如使用 PHP)

推荐方案:Apache + PHP-FPM

apt install php-fpm
a2enmod proxy_fcgi setenvif
a2ensite conf-enabled/php-fpm.conf

关闭 prefork:

a2dismod php8.x

PHP-FPM 配置优化:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

八、SSL / HTTPS 优化

a2enmod ssl
a2enmod http2

启用 HTTP/2

Protocols h2 http/1.1

SSL 优化

SSLEngine on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5

九、日志优化(避免磁盘 IO 瓶颈)

关闭不必要日志

CustomLog ${APACHE_LOG_DIR}/access.log combined
# 高并发时可改为:
# CustomLog off

日志轮转

apt install logrotate

确保:

/etc/logrotate.d/apache2

十、监控与压测

查看状态

apachectl status
systemctl status apache2

压测

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

十一、进阶(可选)

  • 使用 Redis / Memcached 缓存会话
  • 使用 Varnish 做反向缓存
  • 使用 Nginx 反代 Apache(静态走 Nginx)
  • 开启 OPcache(PHP)

总结(最佳实践)

✅ Debian + Apache2 推荐组合:

Debian 12
Apache2 (mpm_event)
PHP-FPM
HTTP/2
gzip + expires
logrotate

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

  • 服务器配置(CPU / 内存)
  • 是否用 PHP / WordPress / 静态站
  • 并发量级别

我可以给你一份直接可用的优化配置。

0 踩