逆引きマニュアル: Apache HTTP Server: 設定ファイルの読み込み

投稿日:

知りたいこと

Apache HTTP Server(以下単に"Apache")において、 設定がどの順番で読み込まれるかどうかです。 CentOS 7.3(2017-08-11時点)のApache 2.4.6の場合について記載します。

参考サイト

調べた内容

メインの設定ファイルの場所

まず、CentOS 7ではsystemdを使っていますが、 この設定ファイルは /usr/lib/systemd/system/httpd.service になります。

このファイルに以下の2行が書かれています。 EnvironmentFileが変数設定、ExecStartが起動コマンドとオプションです。

EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND

次に、/etc/sysconfig/httpd を見ると、OPTIONSの定義が入っていません。 Apacheでは-f オプションで設定ファイルの場所を指定できますが、 この指定がないということは、デフォルトの設定ファイルの場所が使われています。

では、このデフォルトの設定ファイルの場所がどこかというと、コンパイル時に決まります1

The main configuration file is usually called httpd.conf. The location of this file is set at compile-time, but may be overridden with the -f command line flag.

これ以上は、CentOSのSRPMを見ないと分からないのですが、 /etc/httpd/conf/httpd.conf が指定されている (もしくはデフォルトがそうなっている)ので間違いないでしょう。

その他の設定ファイルの読み込み

実際には、/etc/httpd/conf.d/ ディレクトリに置いたファイルも読み込まれます。 この設定ファイルの読み込みは、/etc/httpd/conf/httpd.conf の一番最後にある、 以下の記述が該当します。

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

IncludeOptional conf.d/*.confによって、他のファイルが読み込まれていることが分かります。 ワイルドカードが指定されていますが、以下のように、読み込みはアルファベット順になります2

Shell-style (fnmatch()) wildcard characters can be used in the filename or directory parts of the path to include several files at once, in alphabetical order.

マニュアル