这些是我启用的模组:
alias
auth_basic
authz_default
authz_groupfile
authz_host
authz_user
autoindex
deflate
dir
env
mime
negotiation
php5
reqtimeout
rewrite
setenvif
status
我正在尝试尽可能减少 Apache 的内存占用。
任何人都可以指导我正确的方向,哪些是我绝对需要的,哪些是可选的?我计划运行 Symfony,但我找不到任何有关 symfony 的要求才能使其全部正常工作。
好吧,您可以首先禁用所有
auth
/ authz
模块,除非您打算让 Apache 为您执行身份验证工作,在这种情况下,仅启用您实际要使用的 auth
模块.
您可能并不真正需要
autoindex
模块;仅当您希望 Apache 自动生成索引文件时才需要它。
deflate
— 您确实想要这样,因此 Apache 可以在发送回客户端之前对数据进行 gzip 压缩(显着减少流量)。
reqtimeout
——这是实验性的。不确定你是否有意包含它。
我最近阅读了一个网页,其中详细介绍了可以安全删除哪些 Apache 模块。他考虑了最常见的用例,但您应该始终事后检查并重新启用您确实需要的功能:
这是作者启用的模块列表:
core_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
mpm_event_module (static)
http_module (static)
so_module (static)
auth_basic_module (shared)
authn_file_module (shared)
authz_host_module (shared)
authz_user_module (shared)
expires_module (shared)
deflate_module (shared)
headers_module (shared)
dir_module (shared)
mime_module (shared)
setenvif_module (shared)
rewrite_module (shared)
proxy_module (shared)
proxy_fcgi_module (shared)
该页面包含 CentOS 和 Ubuntu 服务器的详细信息。我强烈建议阅读整个页面,因为它包含有关为什么某些软件包被保留或被禁用的详细信息,以及提示。
我只使用: dir、php5、authz_host、mime、重写。
禁用无用的模块将为您节省大量资源。
我建议你一一禁用并每次重新启动apache并进行测试。另请注意您一开始拥有哪些模块,以防出现错误,以便能够将其恢复回来
我创建了一个小的 python 脚本来帮助你。 请查看 https://github.com/zioalex/unused_apache_modules
这就是您可以期待的:
curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py
1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3
2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1
3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0
To remove safely:
['mod_proxy_connect.c']
POPPED: mod_proxy_connect.c
To KEEP: ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']
该脚本正在检查实际使用的模块,并建议您可以安全删除哪些内容
POPPED: mod_proxy_connect.c
以及应该保留什么 To KEEP: ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']
注释掉或禁用所有模块。
while fails $(apachectl configtest) # or apache2ctl configtest on debian
do
if directive needed
Add in the module that supplies the directive complained about.
else
delete directive
fi
done
这比将它们一一注释掉更容易,您最终会得到最小集。之后测试一下它是否一切正常,但我已经将它用作一个进程几次,没有出现重大问题,但无配置模块理论上可能会失败(如果存在这样的事情)。
我将启用的模块列表从
actions alias auth_basic auth_digest authn_file authz_default authz_groupfile authz_host authz_user autoindex cgi dav dav_fs dav_svn deflate dir env fcgid mime negotiation php5 proxy proxy_balancer proxy_connect proxy_http reqtimeout rewrite ruby setenvif ssl status suexec
大幅缩小到更轻:authz_host deflate dir fcgid mime php5 rewrite
。