如何debuggingapache虚拟主机configuration?

再一次,我的apache虚拟主机configuration有问题。 (使用默认configuration,而不是我的特定configuration)。

问题不是真正的configuration错误,而是如何解决它。

有没有人有很好的build议来解决这类问题很快?

一些更多的信息。

默认的conf文件是这样的:

NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> 

而不适用的虚拟主机configuration是这样的:

 <VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://ip.ip.ip.ip:8088/ ProxyPassReverse / http://ip.ip.ip.ip:8088/ ServerName wiki.mydomain.com </VirtualHost> 

语法检查

要检查configuration文件的语法错误:

 # Fedora, RHEL, CentOS, OSX httpd -t # Debian, Ubuntu apache2ctl -t # MacOS apachectl -t 

列出虚拟主机

列出所有虚拟主机及其位置:

 # Fedora, RHEL, CentOS, OSX httpd -S # Debian, Ubuntu apache2ctl -S # MacOS apachectl -S 

如果您尝试debugging虚拟主机configuration,则可能会发现Apache -S命令行开关很有用。 即,键入以下命令:

 httpd -S 

这个命令会转储出Apacheparsingconfiguration文件的描述。 仔细检查IP地址和服务器名称可能有助于发现configuration错误。 (请参阅其他命令行选项的httpd程序的文档)。

这里有一个命令,我认为可以有一些帮助:

 apachectl -t -D DUMP_VHOSTS 

你会得到所有虚拟主机的列表,你会知道哪一个是默认主机,你会确保你的语法是正确的(和yojimbo87提供的apachectl configtest相同)。

您还会知道每个虚拟主机的声明。 如果你的configuration文件乱七八糟,这可能会很方便。 ;)

首先用apachectl configtest检查configuration文件的语法错误,然后查看apache错误日志 。

我有一个新的VirtualHostconfiguration文件,使用apachectl -S命令时没有显示。 经过多次搔抓之后,我意识到我的文件没有后缀“.conf”。 一旦我用这个前缀重命名了文件,我的Vhost就开始显示并运行了!

我最近有一些VirtualHost的问题。 我用a2ensite移动启用主机,但在运行重新启动(这将杀死服务器失败)我跑了

 apache2ctl -S 

这给你一些关于你的虚拟主机的信息。 这不是完美的,但它有帮助。

我发现自己的错误,我没有添加日志文件名:ErrorLog / var / log / apache2
和这个path:目录“/ usr / share / doc /”没有包含网站的来源。

我改变了这两个之后,所有的工作。 有趣的是,Apache没有发出任何错误,只是没有在我的Mac OS Sierra上静静地打开我的网站。