Apache2 Debian conf どこになにを置けばいいのか


背景: 
apache2を触ることになったんですが、confフォルダがたくさんあり、
confをどう配置するのが正しいのかを調べてみました。(なぜavailableとenabledに分かれているのか)

まとめ (TL;DR)

設定をコメントアウトしたり、バックアップをとって削除したりは面倒なので、
設定はavailable置き、a2en---コマンドで適用、a2dis---で解除する方がベターだと思います。

基本情報

基本的に、 /etc/apache2/apache2.conf の意訳となります。

まず初めにDocumentのTopに、

Apache 2 installation は、
モジュール、バーチャルホスト、個人的な設定の追加、削除がフレキシブルに行えるようにする試みを行いました。

とあります。

これはどういうことかと言うと、RedHat系のapacheの設定ファイルはhttpd.confに書いてあるのですが、
これでは1つのconfファイルをいじるので、設定変更の際の切り替えが面倒ということです。

ですので、Debian apache2 では、
apache2.confが入っているroot, そして available - enableというフォルダが、conf, sites modsに個々に用意されています。

mods, conf, sites の違いは下記URLを参照ください。
参考URL:http://www.linux.net-japan.info/

なぜフォルダが2つあるのか(available, enabled)

結論からいうと、使う設定ファイルと、使わない設定ファイルを分けるためです。
availableはconfを保存しておくためのフォルダで、ここにたくさんファイルを置いても設定に反映されません。
こうするとなにがうれしいかというと、実はapacheのコマンドでこの設定ファイルを適用、非適用することが簡単にできることです。
コマンドは以下になります。

a2ensite filename :sites-avalableの中に入っている filename.conf の設定を適用します。 
a2dissite filename :sites-enableの中に入っている filename.conf の設定を削除します。

a2enmod filename :mods-avalableの中に入っている filename.conf の設定を適用します。 
a2dismod filename :mods-enableの中に入っている filename.conf の設定を削除します。

a2enconf filename :conf-avalableの中に入っている filename.conf の設定を適用します。 
※filename.loadに LoadModule ... の1文を記載し、残りの<IfModule> 〜を .confに書きます。
a2disconf filename :conf-enableの中に入っている filename.conf の設定を削除します。

a2 が apache2を指していて、 en = enable, dis = disable だと思われます。

How does it work? (どうやって動いているのか?

apache2.confがロードしている内容は以下のとおり

/etc/apache2/apache2.conf
#       /etc/apache2/
#       |-- apache2.conf
#       |       `--  ports.conf
#       |-- mods-enabled
#       |       |-- *.load
#       |       `-- *.conf
#       |-- conf-enabled
#       |       `-- *.conf
#       `-- sites-enabled
#               `-- *.conf

実は /etc/apache2/apache2.confを最後まで読んでみると、141、216、219行目で(vim だと :set nu で行数がでます。)
IncludeOptional ***-enabled/*.conf (*** = mods, sites, conf) となっています。
本来ならば、apache2.confしか呼ばれないのですが、ここで各 enableフォルダの.confをincludeしています。
ここで勘の良い方は、分かると思うのですが、読み込ませたいconfはenableフォルダに置けばロードされます。
では上記のコマンドで何をやっているかというと、
a2en---とやることで指定したavailableのconfファイルのシンボリックリンクがenabledフォルダに作成されます。
a2dis---でenabledからリンクが削除されます。
そうやって、enabledにできたconfファイルがapache2.confから呼ばれるわけです。