muninをインストールしてApache設定の考え方の違いに気づく

Apache設定のやりかたについて、考え方が間違っていることに気づいた。

発端はUbuntuサーバにmuninをインストールしようとして、ネットで調べると、「apt-getでインストールしたら何も設定しないで、ブラウザで表示できる。すごく便利だ」なんて書かれていた。しかし、自分でやってみると、インストールした後、しばらく時間をおいてもブラウザにはエラー表示のみ。いつものことながら、はまり状態に突入した。

muninのインストール

$ sudo apt-get install munin

インストールが完了したが、ブラウザからアクセスすると下記のエラーがでてしまう。

Forbidden
You don't have permission to access /munin/ on this server.

/etc/munin.conf のファイルを読んでみると、muninは /var/cache/munin/www 配下にファイルを作ることがわかった。確かにファイルは作られている。となると、Apache設定の問題と思い(permissionのエラーなんだからApacheの問題だよね。早く気付けよ俺)、設定するディレクトリを調べてみたら、

$ ls -l /etc/apache2/conf.d/munin
lrwxrwxrwx 1 root root 23 2010-11-03 12:16 /etc/apache2/conf.d/munin -> ../../munin/apache.conf

ありました。/etc/munin/apache.conf に設定が記述されているようです。
apache.conf ファイルを開いてみると、

あはは。localhostからのみアクセスできるように制限がかかっていました。誰でもアクセスできるように変更。

ここでハタと気付いた。「インストール後、何もせずにうまく動きました」というネット上の報告は、ローカルホストのブラウザで見ていたのですね。自分のように、muninをインストールしたマシンと、別のPCから見ようとしたらエラーとなってしまうのでした。やっぱり、同じように悩んでいた人もネットで見つけました。自分だけじゃないので、意味も無く、ちょっと安心。

Apache設定で、かんちがいしていたところを、以下にUbuntu日本語フォーラムから引用しておく。

ubuntu (debian系) のデストリビューションでは、パッケージをアップグレードしたときに、設定ファイルの更新が伴う場合でも、ユーザーが追加で設定した内容まで勝手に更新されないようにするため、このようなかたちになっています

中心になる設定ファイルは /etc/apache2/apache2.conf なので、このファイルを見ればどのように動作するかはすぐに分かると思います
一応 説明すると、以下のようになります

1) Apache の起動 UID などの基本的な設定をする
2) /etc/apache2/mods-enabled/*.load を読み込む (モジュールの読み込み)
3) /etc/apache2/mods-enabled/*.conf を読み込む (モジュールの設定)
4) /etc/apache2/httpd.conf を読み込む
5) /etc/apache2/ports.conf を読み込む (待ち受けポートの設定)
6) ログ (エラーログ) の設定をする ※ほとんどの部分はコメントアウトされている
7) /etc/apache2/conf.d/* を読み込む
8 ) /etc/apache2/sites-enabled/* を読み込む (サイトの設定)

インストール直後は、/etc/apache2/mods-enabled/ と /etc/apache2/sites-enabled/ にあるファイルは、それぞれ /etc/apache2/mods-available/ 、 /etc/apache2/sites-available/ にあるファイルへのシンボリックリンクです

インストール直後は最低限 (起動するためだけ) の設定がされているに過ぎませんので、必要な設定は全て追加していくことになります
apache 全体に及ぶ設定は、/etc/apache2/conf.d/ に、そしてサイト単位の設定は /etc/apache2/sites-enable/ にファイルをおくことが推奨されています

また、他のデストリビューション (Fedora) などに慣れている場合は、今までと同じように /etc/apache2/httpd.conf に修正しても大丈夫なようになっています