Debian
Apache
apache2
conf
Apache2.4

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

More than 3 years have passed since last update.

背景: 

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から呼ばれるわけです。