Apacheのディレクトリを理解しよう

UbuntuでのApacheのディレクトリについてまとめました。

他の設定ファイルにも共通しているところがあるので、参考になれば思います。

登場人物の確認

まずはざっとApacheのディレクトリ構成を見てみましょう。

以下はtreeコマンドで実行した結果です。

modsディレクトリは数が多いので一部省略しています。

/etc/apache2
├── apache2.conf
├── conf-available
│   ├── charset.conf
│   ├── localized-error-pages.conf
│   ├── other-vhosts-access-log.conf
│   ├── security.conf
│   └── serve-cgi-bin.conf
├── conf-enabled
│   ├── charset.conf -> ../conf-available/charset.conf
│   ├── localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
│   ├── other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
│   ├── security.conf -> ../conf-available/security.conf
│   └── serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
├── envvars
├── magic
├── mods-available
│   ├── access_compat.load
│   ├── actions.conf
│   ├── actions.load
...
│   └── xml2enc.load
├── mods-enabled
│   ├── access_compat.load -> ../mods-available/access_compat.load
│   ├── alias.conf -> ../mods-available/alias.conf
│   ├── alias.load -> ../mods-available/alias.load
...
│   └── status.load -> ../mods-available/status.load
├── ports.conf
├── sites-available
│   ├── 000-default.conf
│   └── default-ssl.conf
└── sites-enabled
    └── 000-default.conf -> ../sites-available/000-default.conf

この中で重要なのは次の5つです。

apache2.conf
ports.conf
mods-enabled
conf-enabled
sites-enabled

それぞれ見ていきましょう。

デフォルトの格納場所について

Ubuntuでapt-getコマンドでインストールした場合、設定ファイルは次の場所に格納されます。

/etc/apache2

Apacheに関するすべての設定ファイルはここに入っています。

もし/etc/apach2が見当たらない場合、次のコマンドで確認してみてください。

apachectl -S
ServerRoot: "/etc/apache2"

ServerRootがapacheの設定ファイルの置き場所になります。

当たり前のことかもしれませんが、確認しておきましょう。

メインの設定ファイルはapache2.conf

Apache全体の設定はapach2.confファイルに記述されています。

/etc/apache2.conf

ここから小分けにした設定ファイルが読み込まれていきます。

ファイルの読み込みにはIncludeIncludeOptionalで行われます。

Include ports.conf
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

ポート番号を指定するports.conf

Apacheで受け付けるポート番号を設定するには、ports.confファイルを編集します。

ports.conf

初期値では80番ポートが使われます。

Listen 80

またSSLでは443番ポートが使われます。

Listen 443

単純にウェブサイトを公開するだけであれば、変更することはないでしょう。

キャッシュを利用したり、Nginxを併用する場合などは変更が必要になります。

*-availableと*-enabledとは?

先に-available-enabledの名前がついているディレクトリについて確認しておきたいと思います。

-availableには利用できる設定ファイルが入っています。

-enabledには、-availableの中から使う機能だけにシンボリックリンクが貼られています。

例えば私の環境では、mods-availableには131個の設定ファイルが入っていて、mods-enabledには27個のシンボリックリンクが貼られています。

このように場所を分けておけば、リンクの作成と削除だけで、機能のオン・オフができるようになるのです。

この仕組みが分かったところで、UbuntuのApacheには機能を有効にするa2en + 種類a2dis + 種類コマンドがあることを覚えてきましょう。

有効なモジュールが入っているmods-enabled

先ほどの説明にもありましたが、-enabledが付くディレクトリには有効になっている機能の設定ファイルのリンクが貼られています。

modsはモジュールのことで、Apacheの本体とは別にこれらを有効にすることで様々な機能を付加していきます。

例えば、安全に通信を行うためにSSLの機能をオンにしたいとしましょう。

次のようにしてモジュールを有効にします。

a2enmod ssl

モジュールを反映するために再起動が促されますが、今は使い方の確認だけなので再起動をしなくても構いません。

To activate the new configuration, you need to run:
  service apache2 restart

実際にモジュールが有効になっているか見てみましょう。

apachectl -M

このように表示されていればOKです。

Loaded Modules:
  ssl_module (shared)

念のため、mods-enabledディレクトリも確認しておきましょう。

ls -l /etc/apache2/mods-enabled

次のようにリンクが貼られていれば間違いありません。

lrwxrwxrwx 1 root root 26 Feb 12 19:48 ssl.conf -> ../mods-available/ssl.conf
lrwxrwxrwx 1 root root 26 Feb 12 19:48 ssl.load -> ../mods-available/ssl.load

逆に無効にするときは次のコマンドを使います。

a2dismod ssl

有効な設定ファイルが入っているconf-enabled

こちらも同様に、有効になっている機能の設定ファイルのリンクが入っています。

Apacheをインストールしたときはすべての設定ファイルが有効になっています。

操作コマンドもほとんど同じです。

例えば、security.confを有効にする場合は次のようになります。

a2enconf security

無効にする場合は次にようにします。

a2disconf secutiry

この中で触るとすればsecurity.confですが、また別の機会で説明したいと思います。

有効なサイトが入っているsites-enabled

Apacheの設定で一番よく確認することになるディレクトリです。

この中には有効になっているウェブサイトの設定ファイルが入ります。

大枠の設定はapach2.confで行い、サイトごとの設定はこの中にあるconfファイルごとに行うことになるでしょう。

なぜこのようなディレクトリがあるのかというと、1つのサーバーで複数のウェブサイトを利用できるバーチャルホストという機能があるためです。

サイトを有効にするには次のようにします。

a2ensite 000-default.conf

無効にするときは次のようにします。

a2dissite 000-default.conf

まとめ

できるだけ丁寧に説明したつもりですが、くどかったりまだまだ説明不足だったかもしれません。

もしそのようであれば、コメントなど残してもらえると嬉しいです。

余談ですが、私がLinuxを触り始めた時は、暗黙のルールが多すぎて「誰が理解できるんだ!」と憤りを覚えたことがあります。

実際にはマニュアルを丁寧に読んだりすれば少しずつわかるようになるのですが、学習を始めたばかりは覚えることも多く、そんなところではありませんでした。

ブログなどで雰囲気を掴んでもらって、詳しく知りたくなったら公式サイトを見てみる、といった使い方をしてもらえれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です