Apacheを動かすには、Web公開ファイルや設定ファイルを配置する場所を決めなければなりません。この決め方次第で、後々の管理が楽にも、面倒にもなります(編集部)
第21回からApache HTTP Server(以下Apache)の設定の解説をしています。これまで、設定ファイルの基本と、設定に深くかかわるバーチャルホスト機能について解説しました。今回はそれを踏まえて、実際にApacheを運用するために必要な各種ファイルを用意してみます。
Apacheサーバには、設定ファイルのほかにも、ログファイルや、Web公開ディレクトリなど、運用のために必要なファイルやディレクトリが多数あります。これらのファイルやフォルダをうまく取りまとめると管理が容易になります。
第21回で説明したように、設定ファイルは「Include」ディレクティブを使うことで分割できます。プログラミングでも同じことが言えますが、理解しやすい単位に小分けにしていくことで、その後のメンテナンスや転用が容易になります。1個の巨大な設定ファイルを作ってしまわないように注意しましょう。
まずは、Apacheのインストールディレクトリにある設定ファイルをのぞいてみましょう。Apacheをインストールすると標準で作られる設定ファイルは、いわば設定サンプルのようなものですが、必要な部分を修正して、使うこともできます。
設定ファイルをすべて自作するのも悪くないですが、最初のうちは何かと慣れないものです。標準のものを書き換えて使う方がよいでしょう。また、一般に設定すべき内容や、バージョンアップ時の変更点などを知ることができるというメリットもあります。筆者は基本的に標準のものを使い、Apacheをバージョンアップするごとに差分を確認しています。
Apacheのインストールディレクトリにある、標準の設定ファイルは実はすでにいくつかに分かれています。元になる設定ファイルは「conf/httpd.conf」で、ごく基本的な設定はここに記述するようになっています。また、Apacheが最初に読み込む設定ファイルは、conf/httpd.confです。これは、起動時に別のファイルを指定しない限り変わりません。
このファイルをのぞいてみると、末尾の方にたくさんのIncludeディレクティブがあることが分かります。しかもすべてコメントアウトされていて、そのままではApacheが使うことはありません。
(略) # Server-pool management (MPM specific) #Include conf/extra/httpd-mpm.conf # Multi-language error messages #Include conf/extra/httpd-multilang-errordoc.conf # Fancy directory listings #Include conf/extra/httpd-autoindex.conf # Language settings #Include conf/extra/httpd-languages.conf # User home directories #Include conf/extra/httpd-userdir.conf # Real-time info on requests and configuration #Include conf/extra/httpd-info.conf # Virtual hosts #Include conf/extra/httpd-vhosts.conf # Local access to the Apache HTTP Server Manual #Include conf/extra/httpd-manual.conf # Distributed authoring and versioning (WebDAV) #Include conf/extra/httpd-dav.conf # Various default settings #Include conf/extra/httpd-default.conf (略)
このIncludeディレクティブで読み込まれるファイルはすべて「conf/extra」にあります。必要に応じてコメントアウトして利用するのです。それぞれの設定ファイルは機能別に分類されているので、使いたい機能があれば該当する部分のコメントを外す、というように使います。
ただし、いくつかの設定ファイルはバーチャルホストを前提にすると使いづらいものとなっています。どのファイルをどのように利用するかは次回以降に譲るとして、今回はレイアウトに着目します。一般に、Apacheの設定ファイルは、機能のグループごとにファイルを分割し、Apacheが最初に読み込む設定ファイルの中でコメントアウトすることで使うかどうかを決める、という点が今回の要点です。
Apacheの標準の設定ファイルを書き換えて、全体的な設定、標準的な設定を記述したとします。次はローカルな設定、すなわち作りたいサーバそれぞれの設定が必要になります。この設定はApache標準の設定ファイルには記述しないで、別の場所に設定ファイルを作り、そこに記述した方がよいでしょう。
これまでの解説では、Apacheのインストール場所をバージョンが変わるたびに変えてきました。このような形でインストールしておくと、ローカルな設定の場所と、Apacheのインストール場所とを分離できるのでバージョンアップが容易になります。もちろん、問題があったときにバージョンをロールバックすることも簡単です。
具体的には、「/srv/httpd/apache.conf」という設定ファイルを用意して、バージョンごとに存在するApache標準の設定ファイルからIncludeディレクティブで読み込むようにするのです。
「/srv/」というディレクトリは、サービスに関するデータを格納するというようにFHS(Filesystem Hierarchy Standard)という規格で標準化されています。この規格はファイルやディレクトリの用途や位置を定めたものです。
こういったデータの格納場所として「/var/」以下にあるディレクトリを使うことも多いかと思いますが、本連載では標準に従って「/srv/」を採用します。さらに、Webサーバ関連のファイルを格納することから「/srv/httpd/」というサブディレクトリを作成します。
この「/srv/httpd/」ディレクトリにWebサーバの設定やデータを格納していくことで、バージョンごとに異なるApacheのインストール場所とは切り離したまま、ローカルのWebサーバ全体のデータをまとめて保存できるようになります。もちろんバーチャルホストに関する設定もこのディレクトリに格納します。
「/srv/httpd/」の内部には、バーチャルホスト専用のサブディレクトリを作成します。「www.example.com」というバーチャルホストを作るなら「/srv/httpd/www.example.com/」というディレクトリを作成するわけです。これを構築したいバーチャルホストの数だけ作ります。
それぞれのバーチャルホストのディレクトリには、少なくとも、そのバーチャルホストのApache設定ファイル、ログファイル格納ディレクトリとWeb公開ディレクトリを作成します。「www.example.com」と「test.example.com」というバーチャルホストを設定したとすると、次のようなレイアウトになります。
各バーチャルホストディレクトリの「logs/」がログファイル格納ディレクトリ、「webspace/」がWeb公開ディレクトリです。このようなレイアウトにすることで、各バーチャルファイルのディレクトリ構造を統一でき、把握しやすくなります。バーチャルホストの追加や削除も容易です。
それぞれの設定ファイルの役割としては、「/srv/httpd/apache.conf」はバーチャルホストを定義するための設定や、共通の設定を記述します。個々のバーチャルホストディレクトリの設定は、もちろんそのバーチャルホスト固有のものを記述します。
Apache標準の設定ファイルでは、機能グループで設定を分割していましたが、ここではバーチャルホスト単位で分割しています。ここで機能を軸に分割しても、使いやすくはならないでしょう。分割軸は時と場合によって適切に使い分ける必要があります。
ちなみに、バーチャルホスト固有の設定ファイルが巨大になるようなときは、さらに分割することがあります。このときもやはり機能を軸にすることはありますが、URL(ディレクトリ)ごとに設定が大きく変わるときは、ディレクトリ単位で分割することがあります。
設定ファイルやディレクトリのレイアウトについては以上です。次回はさらに詳細な設定について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.