Как отладить конфигурацию виртуального хоста apache? - PullRequest
127 голосов
/ 29 марта 2011

Еще раз, у меня проблема с конфигурацией моего виртуального хоста apache.(Конфигурация по умолчанию используется вместо моей конкретной).

Проблема на самом деле не в неправильной конфигурации, а в том, как ее решить.

У кого-нибудь есть полезные советы, чтобы быстро решить проблему такого рода?

Некоторые дополнительные сведения.

Файл конфигурации по умолчанию является следующим:

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>

А конфигурация виртуального хоста, которая не применяется, это:

<VirtualHost *:*>

ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com

</VirtualHost>

Ответы [ 7 ]

179 голосов
/ 27 сентября 2011

Проверка синтаксиса

Чтобы проверить файлы конфигурации на наличие синтаксических ошибок:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -t

# Debian-based (Ubuntu)
apache2ctl -t

# MacOS
apachectl -t

Список виртуальных хостов

Для просмотра списка всех виртуальных хостов и их местоположения:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -S

# Debian-based (Ubuntu)
apache2ctl -S

# MacOS
apachectl -S
27 голосов
/ 30 августа 2013

Вот команда, которая, как мне кажется, может помочь:

apachectl -t -D DUMP_VHOSTS

Вы получите список всех vhosts, вы будете знать, какой из них по умолчанию, и вы убедитесь, что ваш синтаксис правильный (такой же, как apachectl configtest, предложенный yojimbo87).

Вы также будете знать, где объявлен каждый vhost. Это может быть удобно, если ваши файлы конфигурации беспорядок. ;)

22 голосов
/ 09 июня 2013

Если вы пытаетесь отладить конфигурацию вашего виртуального хоста, вам может пригодиться ключ командной строки Apache -S. То есть введите следующую команду:

httpd -S

Эта команда выведет описание того, как Apache проанализировал файл конфигурации. Тщательная проверка IP-адресов и имен серверов может помочь выявить ошибки конфигурации. (См. Документы для программы httpd для других параметров командной строки).

10 голосов
/ 07 мая 2016

У меня был новый файл конфигурации VirtualHost, который не отображался при использовании команды apachectl -S.После долгих царапин я понял, что мой файл не имеет суффикса ".conf".Как только я переименовал файл с этим суффиксом, мой Vhost начал показывать и работать!

10 голосов
/ 29 марта 2011

Сначала проверьте config файлы на наличие синтаксических ошибок с apachectl configtest, а затем посмотрите на ошибку apache logs .

5 голосов
/ 05 марта 2014

У меня недавно были некоторые проблемы с VirtualHost.Я использовал a2ensite для перемещения, чтобы включить хост, но перед запуском перезапуска (который мог бы убить сервер при сбое) я запустил

apache2ctl -S

, который дает вам некоторую информацию о том, что происходит с вашими виртуальными хостами.Это не идеально, но это помогает.

1 голос
/ 18 марта 2017

Я нашел свою собственную ошибку, я не добавил имя файла журнала: ErrorLog / var / log / apache2
И этот путь: Каталог "/ usr / share / doc /" Не содержит источников на сайте.

После того, как я поменял эти два, все заработало.Интересно, что apache не выдавал никаких ошибок, просто не открывал мой сайт на моем Mac OS Sierra.

...