Debian系のApache管理方法

DebianディストリビューションApacheは一般的なレイアウトとは少し異なっている。

/etc/apache2/apache2.conf 基本設定
/etc/apache2/httpd.conf オーバーライドする設定
/etc/apache2/conf.d/ 基本設定の中でIncludeするスニペット
/etc/apache2/ports.conf ポートの設定
/etc/apache2/envvars 環境変数の設定
/etc/apache2/mods-available/ 利用可能なモジュール設定
/etc/apache2/mods-enabled/ 利用中のモジュール設定(リンク)
/etc/apache2/sites-available/ 利用可能なサイト設定
/etc/apache2/sites-enabled/ 利用中のサイト設定(リンク)
/var/www ドキュメントルート
/usr/lib/cgi-bin cgi-bin
/var/log/apache2 ログ


Apacheの設定といえばhttpd.confだけど、Debianの場合0バイトの空ファイル。初めて見ると何だこりゃと思う。
基本的な設定はapache2.confの方に書いてあって、httpd.confはIncludeされるようになっている。
設定を変更したい場合は、apache2.confはいじらずにhttpd.confを書き換えることになる。
ポートに関する設定だけはports.confに書かれている。ListenとかNameVirtualHostとか。
ちなみにServerTokensやServerSignatureはconf.d/securityに書かれている。


モジュールに関する設定はmods-availableにモジュール毎の設定ファイルとして格納されていて、それらのうち実際に有効にするものがmods-enabledにシンボリックリンクとして置かれる。
そしてこのリンクによるOn/Offはa2enmod, a2dismodというコマンドで制御する。

例:mod_proxyを有効にする
sudo a2enmod proxy

例:mod_proxyを無効にする
sudo a2dismod proxy


サイトに関する設定もモジュールと同じ方式で、sites-availableとsites-enabledで管理される。
バーチャルホストやLocationなどでファイルを分けて管理する(defaultは使わずにコピーして使うと良い)。

例:svn.example.comを有効にする
sudo a2ensite svn.example.com

例:svn.example.comを無効にする
sudo a2dissite svn.example.com


modsもsitesもavailableの方を編集するようにする。
間違ってもenabledの方でcp hoge hoge.bakなどとしてはいけない。enabledの中に入っているものは全て読み込まれると思うべし。*1


envvarsは環境変数の設定ファイルで、apache2ctlが毎回読み込むようになっている。
また、Apacheのユーザ、グループ、PIDファイルはこのファイルで設定し、apache2.confの中で環境変数を参照するような形になっている。


Apacheの起動・停止等はapache2ctlでもいいが、/etc/init.d/apache2のほうがよい。
特に設定変更時は/etc/init.d/apache2 reloadでapache2ctl configtestしてからgracefulしてくれる。*2

*1:mods-enabledは*.conf, *.loadが、sites-enabledは全てのファイルが読み込まれる

*2:モジュールの組み替え等はrestartが必要なので注意。