知りたいこと
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.