Как отладить конфигурацию виртуального хоста apache?

95

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

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

Есть ли у кого-нибудь хорошие советы для быстрого решения этой проблемы?

Дополнительная информация.

Файл 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>

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

<VirtualHost *:*>

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

</VirtualHost>
  • 1
    Какую ОС вы используете?
  • 0
    Убунту 8.04 лтс
Теги:
debugging
virtualhost

7 ответов

130
Лучший ответ

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

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

# 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
  • 3
    -S является синонимом для -t -D DUMP_VHOSTS поэтому эти два одинаковы
  • 0
    Я обновил ответ. Спасибо!
Показать ещё 6 комментариев
21

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

httpd -S

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

  • 9
    В Apache2 это apache2ctl -S
  • 1
    или поочередно APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
19

Здесь мне может помочь какая-то команда:

apachectl -t -D DUMP_VHOSTS

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

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

10

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

  • 0
    У меня нет синтаксической ошибки, потому что мой сервер перезагружается и перезагружает конфигурацию без каких-либо проблем. Я не знаю, в каком журнале я мог найти детали о моей конфигурации.
  • 0
    Журналы ошибок обычно находятся в файле /var/log/apache2/error.log.
Показать ещё 2 комментария
7

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

4

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

apache2ctl -S

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

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню