LoginSignup
46
41

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-28

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

46
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
41