Ubuntu Apache最新版,如何助你提升网站性能,你准备好了吗?
- 内容介绍
- 文章标签
- 相关推荐
在 Ubuntu 环境下Apache 作为最常用的 Web 服务器之一。往往是公司网站性能的瓶颈所在。许多站长面临的痛点包括:页面响应慢、CPU 占用高、内存不足导致频繁交换、并发请求下崩溃等。下面给出一套程序化的调优方案,帮助你一步步消除这些痛点。
1️⃣ 基础环境检查与准备
在开始任何调整之前。先确认所有软件包均为当前版本,以获得最新安全补丁和性能改进。
sudo apt update && sudo apt upgrade
sudo apache2ctl -v # 查看 Apache 版本
sudo php -v # 查看 PHP 版本
如果你使用的是较老的 Ubuntu LTS 版本,可以考虑升级到最新 LTS以获取更完善的内核和内存管理。
🔧 禁用不必要模块
每个启用的模块都会消耗内存和 CPU。通过 a2dismod 禁用无用模块,可以立即降低资源使用情况。
# 示例:禁用 autoindex 和 status
sudo a2dismod autoindex status
sudo systemctl restart apache2
🚀 确认 MPM 模块选择
MPM 决定了 Apache 的并发处理方式。根据你的使用场景选择合适的 MPM:
- PREFORK: 适用于不线程安全的 PHP,稳定但资源使用情况大。话说回来,
- WORKER: 支持线程。适合轻量级 CGI 程序。
- EVENT: 对于高并发 HTTP/1.1 与 HTTP/2,事件驱动可明显提高吞吐量。
# 查看当前 MPM
apachectl -V | grep MPM
# 切换到 EVENT MPM
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
2️⃣ 主要模块启用与配置
🛠️ 开启压缩 & 缓存
# 启用 mod_deflate 与 mod_expires
sudo a2enmod deflate expires
# 配置文件 /etc/apache2/conf-available/extra.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json application/xml
DeflateCompressionLevel 9
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/png "access plus 1 year"
a2enconf extra.conf && systemctl reload apache2
⚡️ 静态文件磁盘缓存
# 启用 mod_cache_disk 并配置缓存方法
sudo a2enmod cache cache_disk
# /etc/apache2/conf-available/cache.conf
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk/
CacheDirLevels 1
CacheDirLength 1
a2enconf cache && systemctl reload apache2
# 创建缓存目录权限:
sudo mkdir -p /var/cache/apache2/mod_cache_disk/
sudo chown www-data:www-data /var/cache/apache2/mod_cache_disk/
🔐 SSL/TLS 调整
# 确保 OpenSSL 更新到最新版。并开启 OCSP Stapling 与 Session Resumption
# 在虚拟主机配置中添加:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/your_cert.pem
SSLCertificateKeyFile /etc/ssl/private/your_key.key
# OCSP Stapling 示例:
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/ocsp"
SSLStaplingReturnResponderErrors off
# Session Resumption 示例:
SSLSessionTickets off
SSLCryptoDevice builtin
systemctl reload apache2
📦 日志轮转与清理
Apt 默认已包含 logrotate 配置,但请确认 Apache 日志也被归档:
# 检查 /etc/logrotate.d/apache.conf 是否存在若无则创建:
cat>> /etc/logrotate.d/apache <'EOF'
/var/log/apache* {
daily
missingok
rotate 14
compress
delaycompress
notifempty
}
EOF
logrotate -f /etc/logrotate.conf # 强制一次归档测试是否正常工作。
🏗️ 可选负载均衡
当单台服务器无法满足访问量时可使用 mod_proxy_balancer 将请求分发至后端集群:
# 启用相关模块:
sudo a2enmod proxy proxy_balancer proxy_http lbmethod_byrequests rewrite headers
# 在虚拟主机配置中添加:
BalancerMember http://backend1.example.com retry=0 timeout=5 acquire=2000 ttl=60 maxattempts=10 ping=ping:80|200|OK|200|200|3000|10s timeout=5 retry=5 ttl=60 maxattempts=10 loadfactor=100 ttl=30 ping="http://backend1.example.com/ping"
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
systemctl reload apache2
💻 PHP-FPM 调优
If you use PHP,consider switching from traditional mod_php to PHP‑FPM which offers 娱乐ter concurrency and lower memory usage.
- Create pool configuration with:
- User = www-data,Group = www-data;
- Cgi.fix_pathinfo = 0;
- Pooled workers: pm = dynamic;pm.max_children = 50;
- Pooled workers: pm.start_servers = 5;
- Pooled workers: pm.min_spare_servers = 5;
- Pooled workers: pm.max_spare_servers = 35;
使用者痛点回顾: • 页面加载超慢 → 缓存 + 压缩 • CPU 饱和 → 精简模块 + 正确 MPM • 内存不足 → SSD + 增加 RAM • 高并发导致崩溃 → 多节点负载均衡 • 日志占满磁盘 → logrotate 自动清理 所有措施都针对上述痛点展开,可让你的 Ubuntu + Apache 网站实现秒级响应与稳定
⚙️ 硬件层面:SSD 与内存升级
-
SATA SSD 替代 HDD 可提高静态文件读取速度约十倍。其实,
增加物理内存至至少16GB。
可避免频繁使用 swap 阻碍 I/O 性能。怎么说呢,调整 vm.swappiness 参数降低程序交换倾向:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sysctl -p
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
sysctl -p
Linux 内核参数还能进一步调整网络堆栈,如 net.core.somaxconn,net.ipv4.tcp_tw_reuse。net.ipv4.tcp_fin_timeout. echo 'net.core.somaxconn=4096'>> /etc/sysctl.conf # 最大监听队列长度 echo 'net.ipv4.tcptwreuse=yes'>> /etc/sysctl.conf # 重复利用 TIMEWAIT 状态连接 echo 'net.ipv4.tcpfin_timeout=15'>> /etc/sysctl.conf # FIN 超时减少
sysctl -p # 应用修改
🔬 性能测试 & 验证
-
ab -n10000 -c100 http://localhost/或者使用wrk,siege等工具进行压力测试。
htop。iostat,sar 等监控工具观察 CPU、IO、内存利用率是否仍然高企。
curl -I https://example.com | grep Server-Timing检测 HTTP/1.1 vs HTTP/₂ 协议差异。**如果未开启** 请检查 Nginx 或 Apache 是否支持 HTTP/₂,并在.
https://httpd.apache.org/docs/current/mod/mod_http_protocol.html#protocols
📌 要点快速回顾:
步骤 | 内容 | 痛点方法
• 更新程序 & 软件包 - 保持最新补丁
•禁止不必要模块 - 降低内存使用 &调整安全性
• 正确 MPM 模块 - 提高并发处理能力
•开启压缩 &,缓存 - 减少带宽消耗,提高页面渲染速度
• 静态文件磁盘缓存 - 降低磁盘 IO 压力。防止热点瓶颈
•SSL/TLS 调整 - 减少握手延迟,提高 HTTPS 性能
•日志轮转 &,说起来,清理,防止磁盘爆满导致崩溃,另外保持日志清晰便于排错。
•老实说,可选负载均衡,高并发时可水平
•PHP‑FPM 调优,更好地支持多线程 I/O 操作。
•SSD + 内存升级,提高硬件层面的吞吐量。老实说,
•性能测试验证,确保改动真正产生效果。
注:以上所有命令请在有 root 权限或使用 sudo 时执行;在生产环境部署前请先备份关键配置文件及数据库。)
老实说,
在 Ubuntu 环境下Apache 作为最常用的 Web 服务器之一。往往是公司网站性能的瓶颈所在。许多站长面临的痛点包括:页面响应慢、CPU 占用高、内存不足导致频繁交换、并发请求下崩溃等。下面给出一套程序化的调优方案,帮助你一步步消除这些痛点。
1️⃣ 基础环境检查与准备
在开始任何调整之前。先确认所有软件包均为当前版本,以获得最新安全补丁和性能改进。

sudo apt update && sudo apt upgrade
sudo apache2ctl -v # 查看 Apache 版本
sudo php -v # 查看 PHP 版本
如果你使用的是较老的 Ubuntu LTS 版本,可以考虑升级到最新 LTS以获取更完善的内核和内存管理。
🔧 禁用不必要模块
每个启用的模块都会消耗内存和 CPU。通过 a2dismod 禁用无用模块,可以立即降低资源使用情况。
# 示例:禁用 autoindex 和 status
sudo a2dismod autoindex status
sudo systemctl restart apache2
🚀 确认 MPM 模块选择
MPM 决定了 Apache 的并发处理方式。根据你的使用场景选择合适的 MPM:

-
PREFORK: 适用于不线程安全的 PHP,稳定但资源使用情况大。话说回来,
-
WORKER: 支持线程。适合轻量级 CGI 程序。
-
EVENT: 对于高并发 HTTP/1.1 与 HTTP/2,事件驱动可明显提高吞吐量。
# 查看当前 MPM
apachectl -V | grep MPM
# 切换到 EVENT MPM
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
2️⃣ 主要模块启用与配置
🛠️ 开启压缩 & 缓存
# 启用 mod_deflate 与 mod_expires
sudo a2enmod deflate expires
# 配置文件 /etc/apache2/conf-available/extra.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json application/xml
DeflateCompressionLevel 9
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/png "access plus 1 year"
a2enconf extra.conf && systemctl reload apache2
⚡️ 静态文件磁盘缓存
# 启用 mod_cache_disk 并配置缓存方法
sudo a2enmod cache cache_disk
# /etc/apache2/conf-available/cache.conf
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk/
CacheDirLevels 1
CacheDirLength 1
a2enconf cache && systemctl reload apache2
# 创建缓存目录权限:
sudo mkdir -p /var/cache/apache2/mod_cache_disk/
sudo chown www-data:www-data /var/cache/apache2/mod_cache_disk/
🔐 SSL/TLS 调整
# 确保 OpenSSL 更新到最新版。并开启 OCSP Stapling 与 Session Resumption
# 在虚拟主机配置中添加:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/your_cert.pem
SSLCertificateKeyFile /etc/ssl/private/your_key.key
# OCSP Stapling 示例:
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/ocsp"
SSLStaplingReturnResponderErrors off
# Session Resumption 示例:
SSLSessionTickets off
SSLCryptoDevice builtin
systemctl reload apache2
📦 日志轮转与清理
Apt 默认已包含 logrotate 配置,但请确认 Apache 日志也被归档:
# 检查 /etc/logrotate.d/apache.conf 是否存在若无则创建:
cat>> /etc/logrotate.d/apache <'EOF'
/var/log/apache* {
daily
missingok
rotate 14
compress
delaycompress
notifempty
}
EOF
logrotate -f /etc/logrotate.conf # 强制一次归档测试是否正常工作。
🏗️ 可选负载均衡
当单台服务器无法满足访问量时可使用 mod_proxy_balancer 将请求分发至后端集群:
# 启用相关模块:
sudo a2enmod proxy proxy_balancer proxy_http lbmethod_byrequests rewrite headers
# 在虚拟主机配置中添加:
BalancerMember http://backend1.example.com retry=0 timeout=5 acquire=2000 ttl=60 maxattempts=10 ping=ping:80|200|OK|200|200|3000|10s timeout=5 retry=5 ttl=60 maxattempts=10 loadfactor=100 ttl=30 ping="http://backend1.example.com/ping"
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
systemctl reload apache2
💻 PHP-FPM 调优
If you use PHP,consider switching from traditional mod_php to PHP‑FPM which offers 娱乐ter concurrency and lower memory usage.
-
Create pool configuration with:
-
User = www-data,Group = www-data;
-
Cgi.fix_pathinfo = 0;
-
Pooled workers: pm = dynamic;pm.max_children = 50;
-
Pooled workers: pm.start_servers = 5;
-
Pooled workers: pm.min_spare_servers = 5;
-
Pooled workers: pm.max_spare_servers = 35;
使用者痛点回顾:
• 页面加载超慢 → 缓存 + 压缩
• CPU 饱和 → 精简模块 + 正确 MPM
• 内存不足 → SSD + 增加 RAM
• 高并发导致崩溃 → 多节点负载均衡
• 日志占满磁盘 → logrotate 自动清理
所有措施都针对上述痛点展开,可让你的 Ubuntu + Apache 网站实现秒级响应与稳定
⚙️ 硬件层面:SSD 与内存升级
-
SATA SSD 替代 HDD 可提高静态文件读取速度约十倍。其实,
增加物理内存至至少16GB。
可避免频繁使用 swap 阻碍 I/O 性能。怎么说呢,
调整 vm.swappiness 参数降低程序交换倾向:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sysctl -p
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
sysctl -p
Linux 内核参数还能进一步调整网络堆栈,如 net.core.somaxconn,net.ipv4.tcp_tw_reuse。net.ipv4.tcp_fin_timeout.
echo 'net.core.somaxconn=4096'>> /etc/sysctl.conf # 最大监听队列长度
echo 'net.ipv4.tcptwreuse=yes'>> /etc/sysctl.conf # 重复利用 TIMEWAIT 状态连接
echo 'net.ipv4.tcpfin_timeout=15'>> /etc/sysctl.conf # FIN 超时减少
sysctl -p # 应用修改
🔬 性能测试 & 验证
-
ab -n10000 -c100 http://localhost/或者使用wrk,siege等工具进行压力测试。
htop。iostat,sar 等监控工具观察 CPU、IO、内存利用率是否仍然高企。
curl -I https://example.com | grep Server-Timing检测 HTTP/1.1 vs HTTP/₂ 协议差异。**如果未开启** 请检查 Nginx 或 Apache 是否支持 HTTP/₂,并在
Protocols h1 http/1.1 h12
.
https://httpd.apache.org/docs/current/mod/mod_http_protocol.html#protocols
📌 要点快速回顾:
步骤 | 内容 | 痛点方法
• 更新程序 & 软件包 - 保持最新补丁
•禁止不必要模块 - 降低内存使用 &调整安全性
• 正确 MPM 模块 - 提高并发处理能力
•开启压缩 &,缓存 - 减少带宽消耗,提高页面渲染速度
• 静态文件磁盘缓存 - 降低磁盘 IO 压力。防止热点瓶颈
•SSL/TLS 调整 - 减少握手延迟,提高 HTTPS 性能
•日志轮转 &,说起来,清理,防止磁盘爆满导致崩溃,另外保持日志清晰便于排错。
•老实说,可选负载均衡,高并发时可水平
•PHP‑FPM 调优,更好地支持多线程 I/O 操作。
•SSD + 内存升级,提高硬件层面的吞吐量。老实说,
•性能测试验证,确保改动真正产生效果。
注:以上所有命令请在有 root 权限或使用 sudo 时执行;在生产环境部署前请先备份关键配置文件及数据库。)

