さて、前回まではapacheのインストールから起動・停止の方法について説明をしてきました。これまでは、Apacheをインストールした際に標準で設定されるhttpd.confを使用してきましたが、実際に使い込んでいくとなるとそのままで使うことはできません。
今回からは実際にhttpd.confの記述方法を説明していきたいと思います。
標準のhttpd.confを見てみる
Apacheの設定ファイルは、標準ではhttpd.confとなっています。こちらのファイルは以下の場所に保存されているので、見てみましょう。
ファイルが存在することを確認できたでしょうか? それではcatコマンドを使用して、ファイルの中身を確認してください。
1,000行ほどあるファイルなので、ここではすべては記述していませんが、上記のような記述から始まるファイルとなっています。ここでお気付きになるかと思いますが、ファイルの中身の大半はコメントアウトされています。つまり、実際に設定を行っている部分は一部です。
なお、今回は実際に利用するための設定ファイルのサンプルを別途用意していますので、下記のリンクからダウンロードしてください。
MPMを指定する
まず、Apacheのキモとなる部分MPMの設定をしていきましょう。MPMとはMulti Processing Moduleの略で、さまざまな設定をすることでApacheの動作方法を指定することができます。これらの設定の多くは、Apacheのパフォーマンスに直接関わってくる部分です。
一般的によく使われるMPMは以下の2種類です。
- 1.worker
- スレッドを使用する。パフォーマンスを重視する際に有利だが、スレッドセーフでないプログラムを動作させることは危険。なお、PHPはworkerで動作させることは推奨されていない。
- 2.prefork
- スレッドを使用せず、事前にユーザからリクエストを受けるためのプロセスをforkさせている。安全に動作させることができるが、workerと比較すると効率が悪い。
上記のとおり、それぞれに長所・短所があります。そのため、実際にどういったケースで使用するかを考えた上で選択をするようにしましょう。今回はpreforkで設定を進めてめていきます。
MPMの設定をする
それでは、実際にhttpd.confを見ていきましょう。MPMに関する設定ファイルは以下の部分です。
上記が基本的に設定する内容です。ここでServersと呼ばれているものは、実際にリクエストを処理するApacheのプロセスのことです。
preforkの場合は、同時に処理できる数は1プロセスあたり1接続となります。そのため、Apacheが使うことのできるリソースの中でできるだけ多くのプロセス数を上げることが可能な設定にしておくべきでしょう。
[TIPS] apache-mode.elを導入する
もっと効率良くhttpd.confを記述したいと思う方もいらっしゃるでしょう.そういった方のために、Emacsではhttpd.confを効率良く記述するためのelispが用意されています。
font-lock-modeと併用することでカラーリングも行うことができるので、Emacsユーザの方はぜひ試してみてください。
- apache-mode.el
- http://www.emacswiki.org/cgi-bin/wiki/diff/apache-mode.el
パフォーマンスチューニングのために
今回はapacheのMPM周りの設定方法について記述をしてきました。こちらはプロセスやスレッドに関する基本的な知識がないとなかなか難しい部分かと思います。一度設定をしてしまうとあまり設定する機会はない部分ではありますが、実際にパフォーマンスのチューニングを行う上では重要な設定になるのでしっかりと押さえておきましょう。