逆引きマニュアル: 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.


  1. Configuration Files

  2. Includeの説明

マニュアル