优化 Ubuntu 上的 Apache(通常指 Apache2)可以从性能、安全、资源占用、并发能力几个方面入手。下面给你一套实用且可落地的优化指南,适合生产环境。
apache2 -v
apache2ctl -M | grep mpm
常见:
event MPMsudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
编辑:
sudo nano /etc/apache2/mods-available/mpm_event.conf
示例(2–4 核服务器):
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
</IfModule>
✅ 说明:
MaxRequestWorkers = 最大并发连接数ThreadsPerChild × MaxRequestWorkers ≈ 并发能力编辑:
sudo nano /etc/apache2/apache2.conf
推荐配置:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
✅ 说明:
KeepAliveTimeout 不要太大(1–5 秒)查看已加载模块:
apache2ctl -M
禁用无用模块(示例):
sudo a2dismod autoindex cgi status
sudo systemctl restart apache2
常见可禁用:
autoindexcgiincludeuserdirsudo a2enmod expires
sudo 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>
sudo a2enmod deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.x-fpm
sudo systemctl restart apache2
sudo nano /etc/php/8.x/fpm/pool.d/www.conf
推荐:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
ulimit -n
建议 ≥ 65535
编辑:
sudo nano /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
在虚拟主机中:
<Directory /var/www/html>
AllowOverride None
</Directory>
Options -Indexes
CustomLog /var/log/apache2/access.log combined env=!dontlog
sudo apt install apache2-utils
ab -n 1000 -c 50 http://your-site.com/
| 场景 | 推荐 |
|---|---|
| 高并发 | Apache + mpm_event + PHP-FPM |
| WordPress | Apache + PHP-FPM + Redis |
| API 服务 | Nginx 或 Apache + event |
| 小内存服务器 | 减少 MaxRequestWorkers |
如果你愿意,可以告诉我:
我可以给你一份定制的 Apache 优化配置文件 ✅