WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Web サーバーの構築 : Apache の USE フラグ

先日、Apache のインストール方法をご紹介しましたが、そのときはUSEフラグについて曖昧にしてしまいました。Apache は独自のUSEフラグをいくつか持っており、場合によってはそれらを設定したほうがパフォーマンスなどの点で有利なこともあります。

今日は、Apache パッケージが参照するUSEフラグについてまとめてみようと思います。

一般的なUSEフラグ

以下は他のパッケージでも使用している一般的なUSEフラグです。

apache2
Apache1.x 系列と Apache2.x 系列の両方をサポートするパッケージに対して、Apache2.x サポートを選択するように指示するものです。Apache2.x を利用する際は必ず指定してください。
debug
コンパイル時にデバッグ情報を生成します。通常は指定する必要はありません。
doc
ドキュメントをインストールします。私は指定していないのでわかりませんが、おそらくインストール直後に表示されるデフォルトページからリンクされる Apache のマニュアルをインストールするかどうかが選択できるのだと思います。同じものが Web 上で公開されているので、普通は指定する必要はないでしょう。
ldap
LDAP サポートを有効にします。LDAP を利用している場合は指定しましょう。
no-htdocs
デフォルトのページを "/var/www/localhost" ではなく "/usr/share/doc/gentoo-webroot-default-*" にインストールします。"/var/www/localhost" に独自のコンテンツを起きたい場合に指定します。
no-suexec
CGI スクリプトを任意のユーザー権限で動作させる suEXEC 機能を無効にします。suEXEC は適切に設定しないとセキュリティー上の脅威になることが多いので、必要なければ無効にしておいたほうがよいでしょう。
ssl
SSL サポートを有効にします。
static-modules
各モジュールを静的にリンクします。起動が速くなるという利点がありますが、設定ファイルでモジュールを取捨選択することはできなくなります。
threads
マルチスレッドサポートを有効にします。大量のリクエストを効率よく処理することが可能になります。以下の MPM の説明もご参照ください。

MPM の選択

Apache には上記の一般的なUSEフラグのほかに、MPM を選択するフラグがいくつかあります。これらは互いに排他的で、いずれかひとつしか同時に指定できません。以下、これらのフラグに関して少し詳しくご紹介します。

MPM とは

MPM とは、「マルチプロセッシングモジュール」の略で、クライアントからのリクエストを受け付けて、それを処理するプロセスやスレッドを起動するという非常に重要な役割を担当します。Windows 版などで OS ネイティブなネットワークレイヤを利用するためにコアモジュールから分離されたようです。同時に Linux(UNIX) 上でも、サイトの規模などに応じてスレッドの利用方法を最適化できるという利点もあります。

MPM に関する詳細は Apache のドキュメントをご参照ください。

MPM を選択する USE フラグ

mpm-prefork
スレッドを使わずに、リクエストごとにプロセスを生成するという従来の方法で処理します。安定性に優れているので、小規模のサイトはこの指定でよいと思います。thread USEフラグ が無効になっているときはこれがデフォルトです。
mpm-worker
プロセスとスレッドの双方を利用するハイブリッド型の MPM です。基本的にはひとつのプロセスが持つスレッドが一定数を超えたときはプロセスを生成するような仕組みのようです。これにより、処理効率を高めながら安定性を保持しています。thread USEフラグ が有効な場合のデフォルトです。
mpm-leader
mpm-worker のバリエーションで、スレッドのマネジメントに "Leader/Followers" デザインパターンを使っています。なんと言いつつ、私にはよくわかりません(^^ヾ。現在はまだ試験実装なので、趣味で試してみる程度に抑えたほうが無難でしょう。
mpm-threadpool
多数のアイドル状態のスレッドを保持して、クライアントからのリクエストがあったときにすぐに応答できるようにする MPM です。多くのリソースを消費する代わりに効率的な処理が行える・・・はずなのですが、現在はまだパフォーマンスが出ていないようです。こちらも試験実装なので、実用には向きません。
mpm-peruser
バーチャルホストごとに別々のユーザー/グループで Apache を動作させる MPM です。これにより、よりセキュアなバーチャルホストを実現できます。ただし、バーチャルホストごとにプロセス/スレッドをプールするため、効率は若干落ちるようです。

こんなところでしょうか。ApacheUSEフラグ設定はパフォーマンスやセキュリティーに大きく影響しますので、適切に設定したいところですね。


|left:Apache のより実用的な設定|right:PHP のインストール|

>center:HTTP に戻る
関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles