設定ファイルや公開ドキュメントの配置を考える:仕事で使える魔法のLAMP(23)
Apacheを動かすには、Web公開ファイルや設定ファイルを配置する場所を決めなければなりません。この決め方次第で、後々の管理が楽にも、面倒にもなります(編集部)
設定ファイルなどの配置を工夫すると管理が楽になる
第21回からApache HTTP Server(以下Apache)の設定の解説をしています。これまで、設定ファイルの基本と、設定に深くかかわるバーチャルホスト機能について解説しました。今回はそれを踏まえて、実際にApacheを運用するために必要な各種ファイルを用意してみます。
Apacheサーバには、設定ファイルのほかにも、ログファイルや、Web公開ディレクトリなど、運用のために必要なファイルやディレクトリが多数あります。これらのファイルやフォルダをうまく取りまとめると管理が容易になります。
第21回で説明したように、設定ファイルは「Include」ディレクティブを使うことで分割できます。プログラミングでも同じことが言えますが、理解しやすい単位に小分けにしていくことで、その後のメンテナンスや転用が容易になります。1個の巨大な設定ファイルを作ってしまわないように注意しましょう。
Apache標準の設定ファイル
まずは、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(ディレクトリ)ごとに設定が大きく変わるときは、ディレクトリ単位で分割することがあります。
設定ファイルやディレクトリのレイアウトについては以上です。次回はさらに詳細な設定について解説します。
- CMakeでMySQLをビルドしてみる
- MySQLのビルドに欠かせないCMakeを準備する
- いよいよMySQL編、ソースからビルドすべきか?
- PHPでセッションを利用するための設定
- クライアントがアクセスできる範囲を制限する
- エラーメッセージをどう扱うか?
- ファイルのアップロードを制限する
- リクエストデータを受け取る変数の扱い
- マジッククオート機能には頼らない
- 安全を考えてPHPの実行時設定を調整する
- Apacheの設定ファイルでPHPの設定を変える
- PHPの設定ファイルを作って配置してみる
- PHPスクリプトを実行できるようにする準備
- PHPエクステンション組み込みの仕上げ
- 単純なデータを管理するDBMを使えるようにする
- エクステンションの組み込み状況を確認する
- PHPでデータベースを使う準備をする
- XMLを処理できるようにする
- エクステンションを有効にしてビルドに挑戦!
- PHPテスト失敗の原因を追究する
- 早速PHPをビルド! そしてテスト!
- PHP編に突入! まずはソースをダウンロード
- 設定ファイルを作成してApacheを動作させる
- 設定ファイルや公開ドキュメントの配置を考える
- 1つのサーバに複数の仮想サーバ?
- Apacheの設定ファイルを記述する前に
- サードパーティのApacheモジュールをビルドする
- 認証DBにアクセスするライブラリを組み込む
- Apache同梱ソフトウェアに引数を渡してビルド
- OpenSSLをビルドしてApacheで利用する
- proxyやsslのモジュールを使ってみる
- ライブラリが足りなくてビルドできないときは?
- Apache HTTP Serverのビルドを始めよう
- configureでソフトウェア固有の設定を変更してみる
- configureの設定を変更してみる
- 配布パッケージの中身と、configureの役目を知る
- ダウンロードファイルが真正なものであるかを確認
- Makefileをいろいろ書き換えながらビルドしてみよう
- makeを使ってソフトウェアをビルドしてみよう
- ダイナミックリンクとスタティックリンク
- 「ビルド」という作業は何を指しているのか
- 公開鍵認証でsshを安全に使う
- sshを便利にする公開鍵暗号
- アクセス制限の設定とCentOSのアップデート
- サーバに接続して、一般ユーザーのアカウントを作る
- LAMP環境、自分で作りませんか?
Copyright © ITmedia, Inc. All Rights Reserved.