Apache仮想ホスト構成をデバッグする方法は?


138

ここでも、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>

回答:


198

構文チェック

構成ファイルの構文エラーを確認するには:

# 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

5
-Sの同義語な-t -D DUMP_VHOSTSので、これら2つは同じです
aron.duby

2
Windowsの場合(xamppを使用している場合)、次の場所に同じコマンドがあります。\ xampp \ apache \ bin
Jahmic

ワンプの場合:c:\\wamp\\bin\\apache\\apache2.4.9\\bin\\httpd.exe -S
Lg102

2
これは非常に便利です。ありがとうございましたが、十分ではありません。使用する必要があるというvhostで問題が発生しました。理由はわかりません。Apacheがvhostを選択する方法に関するログを取得したいと思います。
Loenix 2016年

1
選択されたホストに関する動的な情報を提供する仮想ホストまたはメインホストへの実際のアクセスがあったときに、Apacheにエラーファイルまたは他の場所にメッセージを追加させる方法はありますか?LoadModule log_debug_module modules / mod_log_debug.so ... LogMessage "Debug 1" hook = all
David Spector

28

ここに私がいくつかの助けになると思うコマンドがあります:

apachectl -t -D DUMP_VHOSTS

すべてのvhostsのリストが表示され、デフォルトのvhostsがどれであるかがわかり、構文が正しいことを確認できます(yojimbo87によって提案されたapachectl configtestと同じ)。

各仮想ホストが宣言されている場所もわかります。設定ファイルが混乱している場合に便利です。;)


24

仮想ホスト構成をデバッグしようとしている場合は、Apache -Sコマンドラインスイッチが役立つことがあります。つまり、次のコマンドを入力します。

httpd -S

このコマンドは、Apacheが構成ファイルを解析した方法の説明をダンプします。IPアドレスとサーバー名を注意深く調べると、構成の誤りを見つけるのに役立つ場合があります。(他のコマンドラインオプションについては、httpdプログラムのドキュメントを参照してください)。


9
Apache2では、これはapache2ctl -S
artfulrobot 2013

1
または交互にAPACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
rleir

12

まず、チェックアウト設定と構文エラーのためにファイルをapachectl configtestして、apacheのエラーを調べるログ


サーバーが再起動し、問題なく構成を再読み込みするため、構文エラーはありません。自分の構成に関する詳細を見つけることができるログがわかりません。
GaetanZ 2011年

エラーログは通常、「/ var / log / apache2 / error.log」ファイルにあります。
yojimbo87 2011年

「apache2ctl -t」を使用することもできます。
ラリーシルバーマン2013年

11

apachectl -Sコマンドの使用時に表示されない新しいVirtualHost構成ファイルがありました。何度も頭を悩ませた後、自分のファイルに「.conf」というサフィックスが付いていないことに気付きました。そのサフィックスでファイルの名前を変更すると、Vhostが表示されて機能し始めました!


8

最近、VirtualHostでいくつかの問題が発生しました。私が使用しa2ensiteたホストを有効にするが、私のRAN(フェイル上のサーバーを殺す)の再起動を実行する前に

apache2ctl -S

これにより、仮想ホストで何が起こっているかについての情報が得られます。完璧ではありませんが、役立ちます。


3

私は自分の間違いを見つけました。ログファイル名を追加しませんでした:ErrorLog / var / log / apache2
そして、このパス:ディレクトリ "/ usr / share / doc /" Webサイトのソースが含まれていませんでした。

私がこれら2つを変更した後、すべてが機能しました。興味深いことに、Apacheはエラーを発行せず、Mac OS SierraでサイレントにWebサイトを開かなかっただけです。


良い答えです。同様の問題を見つけてください。すべての構文と-S vhostsは正しく、まだ間違ったサイトが提供されています。:80と:443には同じアクセスログファイルがあり、混乱を招くようです。ポートごとに個別のファイルがあり、サイトが機能し始めました。
David McNeill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.