Next: F.2 起動
Up: F.1 apache の設定
Previous: F.1 apache の設定
httpd.conf はサーバの基本設定ファイルであり、全ての設定は
このファイルで行う。NCSA WWW server の設定を引き継いでいるため
に、このファイルの他に srm.conf と access.conf がある。
実際には、これらのファイルは利用しなくても、全て httpd.conf
に書いておけるのだが、サーバの動作としてはこれらのファイル
を httpd.conf を読み込んだ後に読みに行くので、もし srm.conf
や access.conf に何かを設定するとその設定は httpd.conf の
設定をオーバーライドしてしまうので注意しよう。標準で用意され
ている srm.conf や access.conf は全てコメントで有効な設定は
何もない。
以下、default の設定について簡単に解説する。
- 全体の設定
- ServerType
inetd と standalone の2つが指定でき、inetd はリクエストに応じて
apache が立ち上がる設定である。通常、standalone を指定し、起動
時に /usr/local/etc/rc.d/apache.sh で立ち上げる。
- ServerRoot
サーバの設定ファイル、ログファイルなどが置かれるディレクトリの
トップのツリーを設定する。FreeBSD では、全体の設計思想のために
いくつかのディレクトリに分散してしまっているので、
デフォルトのままで良い。なお、conf ファイルにも書かれている注意
だが、末尾に / を付けてはならない。
- MinSpareServers,MaxSpareServers
通常、Unix のデーモンプロセスで複数のクライアントにサービスを
行う場合、自分自身をforkして(分身を作る)、新しいリクエストに対応
するようになっている。しかし、Web の場合、その性格上頻繁に
コネクションの生成消滅が起こるのでforkですらも無視できない程の
性能劣化を引き起こす。そこで予め分身を用意しておき、アクセスが
あったら即座にそのコネクションをその分身に引き渡す事によって
素早い対応を可能にしている。
MinSpareServers の数よりも待機状態のプロセスが少なければ、
更に新しく待機状態のプロセスを作り、MaxSpareServers の数以上
に待機状態のプロセスが増えれば幾つかのプロセスを自動的に減らす。
従って、デフォルトでは 5 以上 10 以下の待機状態のプロセスが
あることになる。
注意すべきなのは、十分なメモリがないマシンでこの数を増やしても
決してレスポンスは早くならない点である。何故ならば、長い間
待機状態のプロセスはシステムによってスワップアウトしてしまう
からである。
- StartServer
前項に関係して、最初に立ち上げるサーバプロセスの数である。
- MaxClients
これも前の項目と関連しているが、同時に立ち上がっても良い(
従って、クライアントの最大数でもある)サーバプロセスの数である。
この数を低くしすぎて、MaxClients以上のアクセスがあった場合、
クライアントはロックアウトしてしまうので、あまり低くしすぎては
ならない。
- MaxRequestsPerChild
立ち上げられた子どものサーバがどれだけのリクエストに応えたら
死すべきかを指定する。これはあまりにも長い間プロセスが動いた
ままだとエラーが起こるシステムがあるために、自動的にプロセス
の消滅生成を行うためのものだが、FreeBSDでは 0 になっているので、
チャイルドプロセスが死ぬ事はない。
- LoadModule
DSO(Dynamic Shared Object)のモジュール指定。Apache では、様々
な機能を動的に追加することができるようになり、非常に柔軟性が
高まっているのだが、その動的モジュールを指定するためのもの
である。モジュールを追加しない限り、デフォルトで問題ない。
- サーバの設定
- Port
スタンドアローンで起動した際にlistenするポートの指定。
inetd で動かす時には指定してはならない。
- User,Group
サーバプロセスである httpd は最初 root で立ち上がり、クライアント
リクエストに応えるためにチャイルドプロセスを立ち上げるが、その
チャイルドプロセスをセキュリティのために別のユーザ、グループの
権限で動かす事ができる。通常、nobody.nogroup で動かす。
- ServerAdmin
サーバ管理者のメイルアドレスを指定する。サーバが作成するエラー
ページなどに利用される。
- DocumentRoot
サーバのページデータを置くトップツリーを指定する。シンボリック
リンクであっても良い(実際に、パッケージではそのように設定されて
いる)。
/usr/local/www/data から変更する必要はない。
- UserDir
ユーザーのホームディレクトリの下の ~/public_html/ をユーザー
の公開用ホームページディレクトリとする。このディレクトリは
nobody.nogroupのサーバプロセスが読めるパーミッションを持っていな
ければならない。
デフォルトは、public_html なので、適当に変更すれば良い。
UserDir www
- Directory
後程別に述べる。
- HostnameLookups
アクセスしてきたクライアントのアドレスをFQDNでログに保存するか、
IPアドレスで保存するかを決める。Off だとIPアドレスで保存する。
もし、On に設定すると、アクセスがあるたびにDNSの逆引きが発生
するので、DNSに対して余計な負荷をかける事になる。デフォルトで
良い。
- ErrorLog, CustomLog
エラーおよびアクセスログの場所の指定。アクセスログはデフォルトでは
common,referer,agentをまとめて(combine)書き込むようになっている。
Noriyo Kanayama