如何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上静静地打开我的网站。