你能确定哪些Apache模块已经被使用,可以被删除吗?

我和许多人一样,有一个相对开箱即用的Apache安装,有很多默认的“LoadModule”行。

从一开始,我就安装了很多软件,说实话,我不知道哪个软件使用哪个模块。

我想减less我的Apache实例的内存占用,要做到这一点,我想删除模块使用。 我知道确定一个模块是否正在使用的唯一方法是从configuration中删除它,看看是否有什么中断。 这比我有时间描述更糟糕。

我想知道是否有人知道如何让Apache能够报告哪些模块已被使用 ,或者如果有另一种方式来以编程方式确定模块是否可以安全地取消configuration

我所做的是build立一个testing服务器,阅读文档 ,并从一个空白页面开始。

以下模块是强制性的:

  • 核心
  • mod_authz_host
  • mod_auth_basic
  • mod_authn_file模块
  • mod_dir
  • mod_log_config
  • mod_mime

然后我注释掉了所有剩下的模块并重新启动Apache。 它会听起来是否有什么事情发生,例如:

Starting httpd: Syntax error on line 10 of /etc/httpd/conf.d/squid.conf: Invalid command 'order', perhaps misspelled or defined by a module not included in the server configuration 

与其他模块一样。 通过使用这种方法,下面是一些通常不需要的模块:

  • mod_authn_alias
  • mod_authn_anon
  • mod_authn_dbm
  • mod_authn_default

  • mod_authz_user
  • mod_authz_owner
  • mod_authz_groupfile
  • mod_authz_dbm
  • mod_authz_default

  • mod_include负责
  • mod_logio
  • mod_ext_filter
  • mod_usertrack
  • mod_dav的
  • mod_info
  • mod_dav_fs可以
  • mod_speling
  • mod_suexec
  • mod_cgi一样

如果您不使用LDAP进行身份validation,则可以禁用此function:

  • mod_ldap模块
  • mod_authnz_ldap模块

启用时应考虑以下模块:

  • mod_proxy的
  • mod_proxy_balancer的
  • mod_proxy_ftp模块
  • mod_proxy_http
  • mod_proxy_connect

  • mod_cache的
  • mod_disk_cache
  • mod_file_cache提供
  • mod_mem_cache模块

之前的postbuild议禁用这些模块,直到出现问题。 虽然这在生产系统上肯定是愚蠢的,但这个人是正确的,因为无论如何你需要做回归testing。

所以在这种情况下:

  1. 构build一个与你正在运行的testing服务器相同的testing服务器,直到站点configuration
  2. 禁用模块。
  3. 在网站上进行回归testing。
  4. 重复步骤2和步骤3,直到出现故障或者完成所有模块。
  5. 重新启用模块。
  6. 重复步骤2和3。
  7. 使用新更新的apache,对configuration执行闪存configuration并重新启动apache服务。
  8. 如果失败,请恢复configuration浴缸,拉动日志,分析并从步骤2开始(如有必要,或者步骤1)。

这可能是简化Apacheconfiguration的最简单的方法。 否则,你将不得不看每个模块,确定其function,并通过网站search,看看哪一个使用该function。 这将需要更长的时间。

另外,这可能会给你一个很好的机会转换更 轻量级的东西:

我没有直接回答你的问题,但是据我所知,互联网上有很多“小”的AMP包,不包括大部分的预装模块。 所以,我会先看看它们作为参考。

这2个链接可能会让你开始:

  1. http://en.wikipedia.org/wiki/List_of_Apache%E2%80%93MySQL%E2%80%93PHP_packages
  2. http://en.wikipedia.org/wiki/Comparison_of_WAMPs

我知道你在问关于Apache的问题,但是考虑到系统的内存限制,通过将Apache交换为Nginx,Lighthttpd或其他小型的Web服务器,可能会更好。 与Nginx,Lighthttpd,Cherokee,G-WAN等年轻的Web服务器相比,Apache对模块的支持非常好,但是内存不足。