列出Apache vhostconfiguration选项(鸟眼)

我正在使用Ubuntu Linux和Apache2以及几个虚拟主机,它们位于/etc/apache2/sites-enabled并且从/etc/apache2/sites-enabled symlinked(激活)。 Ubuntu上的默认设置。

我想知道是否有可用于Apache的通用工具列出所有的虚拟主机信息:

  • 所有可用网站的列表
  • 所有启用的网站列表
  • apache使用的所有启用的网站列表(在“重新加载”之后启用网站)

在这些列表中,我想看到:

  • 虚拟主机的域(和端口)。
  • 虚拟主机的目录。
  • vhost文件中是否存在(语法)错误。

很明显,我可以做一些诡计,sed-ing和awking来获取这些信息,但是我确信这已经在某处正确地完成了:)

我所知道的最接近的工具是apachectl -S

此命令将列出当前configuration中定义的所有虚拟主机,而不pipeApache是​​否正在运行。 信息包括IP地址,端口,ServerName指令的值,configuration文件名以及哪个vhost是默认的。

这是一个通用的Apache工具,可以在Redhat / CentOS,Mac OS X,Solaris以及任何其他你喜欢的Unix上使用,因此它不知道基于Debian的站点 – 可用,站点使能,mods可用启用mods的目录。

apachectl -S没有列出DocumentRoot指令,因为它不是必需的指令,可能不存在于某些虚拟主机中。 它也没有列出任何ServerAlias指令,因为可以有任意数量的指令。 由于他们(以及ServerName指令)可以包含通配符,所以列出域可能会很麻烦。

apachectl -t会做一个语法检查。

根据你的版本,你可能不得不使用apache2ctl -S

我认为列出可用和启用的网站恢复在正确的目录中使用ls

这可能听起来很愚蠢,但是认为你不能相信文件的名字:它的内容可能包含多个虚拟主机。

但是,如果要显示Apache使用的当前configuration,则可能需要查看-S标志。

以root身份login,该命令行应该是一个很好的开始:

 # source /etc/apache2/envvars && apache2 -S 

资料来源: man apache2