apache|サーバー|戦略
著者: Wang Bo
Apache サーバーの設定ファイルは /usr/local/apache/conf/ ディレクトリにあります。従来、動作の設定には httpd.conf、access.conf、srm.conf の 3 つの設定ファイルが使用されます。 Apacheサーバーの。
httpd.conf は最も基本的なサーバー設定を提供し、デーモン httpd がどのように実行されるかを技術的に説明します。srm.conf はサーバーのリソース マッピング ファイルであり、サーバーにさまざまなファイルの MIME タイプとこれらのファイルへのアクセスをサポートする方法を伝えます。 .conf は、サーバーのアクセス権を構成し、さまざまなユーザーやコンピューターのアクセス制限を制御するために使用されます。これら 3 つの構成ファイルは、サーバーの特性のさまざまな側面を制御するため、サーバーを正常に実行するには、これら 3 つのファイルが必要です。設定。
これら 3 つの設定ファイルに加えて、Apache は mime.types ファイルも使用して、さまざまなファイルに対応する MIME タイプを識別します。このマジック ファイルは、Apache サーバーがドキュメントから判断できないように、さまざまな MIME タイプ ファイルにいくつかの特別な識別子を設定します。ファイルの MIME タイプを抽出するとき、ドキュメントの MIME タイプは、ファイル コンテンツ内のこれらの特別なタグによって決定できます。
bash-2.02$ ls -l /usr/local/apache/conf
合計 100
-rw-r--r-- 1 ルート ホイール 348 4 月 16 日 16:01 access.conf
-rw-r --r-- 1 ルート ホイール 348 2月 13 日 13:33 access.conf.default
-rw-r--r-- 1 ルート ホイール 30331 5 月 26 日 08:55 httpd.conf
-rw-r-- r-- 1 ルート ホイール 29953 2 月 13 日 13:33 httpd.conf.default
-rw-r--r-- 1 ルート ホイール 12441 4 月 19 日 15:42 マジック
-rw-r--r-- 1ルートホイール 12441 2月 13 日 13:33 magic.default
-rw-r--r-- 1 ルートホイール 7334 2月 13 13:33 mime.types
-rw-r--r-- 1 ルートホイール 383 5 月13 17:01 srm.conf
-rw-r--r-- 1 root Wheel 357 Feb 13 13:33 srm.conf.default
実際、Apacheの現在のバージョンは、元のhttpd.confとsrmを組み合わせています。 .conf with access.conf 内のすべての設定パラメータは、設定ファイル httpd.conf に配置されます。以前のバージョンとの互換性の理由からのみ (これら 3 つの設定ファイルの使用方法は NCSA-httpd からのものです)、3 つの設定のみが使用されます。書類。提供される access.conf および srm.conf ファイルには特定の設定はありません。
Apache の新しいバージョンでは、すべての設定が httpd.conf に配置されるため、このファイルの設定を調整するだけで済みます。以下では、デフォルトの httpd.conf を例として使用して、Apache サーバーのさまざまな設定オプションを説明します。ただし、設定するパラメーターが多すぎるため、基本的にこれらのパラメーターは非常に明確であり、変更せずに Apache サーバーを実行できるため、心配する必要はありません。ただし、Apache サーバーのパフォーマンスを調整し、特定の機能のサポートを追加する必要がある場合は、これらの設定パラメーターの意味を理解する必要があります。
Apache サーバーのパフォーマンスについては、インターネット上で多くの議論があります。基本的に、Apache を使用するユーザーは、Apache の優れたパフォーマンスが多くの有名な高負荷 Web サイトにも対応していることを疑っていませんが、商用機関のレビューでは、 Apache はスコアが低いことがよくあります。これらのレビューでは、商用 Web サーバーとそのオペレーティング システムは専門会社のエンジニアによってパフォーマンスが調整されていることが多いのに対し、Free のオペレーティング システムと Web サーバーはデフォルトの構成を使用するか、わずかな変更しか加えていないことが多いと多くの人が指摘しました。オペレーティング システムのパフォーマンス調整に加えて、Apache サーバー自体のデフォルト構成は決して最も最適化されて効率的ではなく、ほぼすべての種類のオペレーティング システムの設定に適応する必要があることに注意してください。ハードウェアの種類やマルチプラットフォームの設定に応じて、ソフトウェアが特定のプラットフォームや特定のハードウェアに最適なデフォルト構成を提供することは不可能です。したがって、Apache を使用する場合はパフォーマンスのチューニングが不可欠です。
商用評価で無視されているもう 1 つの事実は、評価ではさまざまな種類の機能が比較されることがよくあることです。たとえば、Apache を使用した標準 CGI のパフォーマンスは、ISAPI や NSAPI などのサーバー側 API と比較されます。これと比較してください。 比較する機能は modperl、FastCGI、ASP に似た機能は PHP などです。 ただし、Apache のオープンモードのため、これらの機能は独立した開発グループによって独立したモジュールとして実装されています。ただし、評価中、テスターはパフォーマンスを評価するために対応するモジュールを追加しませんでした。
HTTPデーモンの動作パラメータ
httpd.confでは、まずhttpdデーモンの動作モードや動作環境を決定するために、動作時に必要なパラメータをいくつか定義します。
ServerType スタンドアロン
ServerType はサーバーの起動モードを定義します。デフォルト値はスタンドアロン、httpd です。
サーバーはそれ自体で起動され、接続リクエストを監視するためにホストに常駐します。 Linux では、Web サーバーは起動ファイル /etc/rc.d/rc.local/init.d/apache で自動的に起動されます。この方法が推奨される設定です。
Apache サーバーを起動するもう 1 つの方法は、スーパー サーバー inetd を使用して接続リクエストを監視し、サーバーを起動する inet メソッドです。 inetd 起動モードを使用する必要がある場合は、この設定に変更し、/etc/rc.d/rc.local/init.d/apache ファイルをブロックし、/etc/inetd.conf を変更して inetd を再起動する必要があります。 Apache は inetd から起動できます。
2 つの方法の違いは、独立した方法では、サーバー自体が独自の起動プロセスを管理するため、サーバーの複数のコピーを起動時にすぐに起動できることです。各コピーはメモリ内に存在します。接続要求があると子プロセスが即座に処理され、顧客のブラウザ要求に対する応答が速くなり、パフォーマンスが向上します。 inetd 方式では、inetd は接続要求を検出した後にのみ http サーバーを起動する必要があります。inetd が監視する必要があるポートが多すぎるため、応答が遅くなり、効率も低下しますが、接続がないときに Web サーバーが占有するリソースが節約されます。リクエスト。したがって、inetd メソッドは、時々アクセスされ、アクセス速度を必要としないサーバーでのみ使用されます。実際、inetd メソッドは http のバーストおよびマルチ接続の特性には適していません。ページに複数の画像が含まれる可能性があり、訪問者数が少ない場合でも、各画像によって接続要求が発生するためです。多くの場合、これは inetd のパフォーマンスによって制限され、inetd によって開始される他のサーバー プログラムに影響を与える可能性もあります。
ServerRoot "/usr/local"
ServerRoot はデーモン httpd の実行ディレクトリを指定するために使用されます。 httpd が起動されると、プロセスのカレント ディレクトリがこのディレクトリに自動的に変更されます。設定ファイルに指定されているパスが相対パスの場合、実際のパスはこのServerRootで定義されたパスの下にあります。
httpd は同時ファイル操作を実行することが多いため、ファイル操作が競合しないようにロックを使用する必要があります。NFS ファイル システムのファイル ロック機能は限られているため、このディレクトリは NFS ファイルではなくローカル ディスク ファイル システムである必要があります。システムを使用する必要があります。
#LockFile /var/run/httpd.lock
LockFile パラメータは、httpd デーモンのロックされたファイルを指定します。通常、Apache サーバーは ServerRoot 以下のパスで自動的に動作します。ただし、ServerRoot が NFS ファイル システムである場合は、このパラメータを使用してローカル ファイル システム内のパスを指定する必要があります。
PidFile /var/run/httpd.pid
PidFile で指定したファイルには httpd デーモンのプロセス番号が記録されます。httpd は自身を自動的にコピーできるため、システム内には複数の httpd プロセスが存在しますが、最初は 1 つのプロセスのみです。他のプロセスの親プロセスであるプロセスを開始しました。このプロセスにシグナルを送信すると、すべての httpd プロセスに影響します。 httpd 親プロセスのプロセス番号は、PidFILE で定義されたファイルに記録されます。
ScoreBoardFile /var/run/httpd.scoreboard
httpd は ScoreBoardFile を使用してプロセスの内部データを維持するため、管理者が 1 台のコンピューター上で複数の Apache サーバーを実行したい場合を除き、通常はこのパラメーターを変更する必要はありません。各 Apache サーバーはすべて独立した設定ファイル htt pd.conf を必要とし、異なる ScoreBoardFile を使用します。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
これら 2 つのパラメータ ResourceConfig および AccessConfig は、srm.conf および access.conf 設定ファイルを使用する古いバージョンの Apache との互換性を保つために使用されます。互換性を確保する必要がない場合は、対応する設定ファイルを /dev/null として指定できます。これは、他の設定ファイルが存在せず、すべての設定オプションの保存に 1 つのファイル httpd.conf のみが使用されることを示します。
タイムアウト300
タイムアウトは、クライアントプログラムとサーバー間の接続のタイムアウト間隔を定義します。この時間間隔(秒)を超えると、サーバーはクライアントから切断されます。
KeepAlive On
HTTP 1.0では、1つの接続は1つのHTTPリクエストのみを送信でき、KeepAliveパラメータはHTTP 1.1バージョンの1接続複数送信機能をサポートするために使用され、複数のHTTPを送信できるようになります。 1 つの接続を要求します。この機能は新しいブラウザでのみサポートされていますが、このオプションを有効にしてください。
MaxKeepAliveRequests 100
MaxKeepAliveRequests は、1 つの接続で実行できる HTTP リクエストの最大数です。この値を 0 に設定すると、1 つの接続内で無制限の数の転送リクエストがサポートされます。実際、1 回の接続で多すぎるページを要求するクライアント プログラムはなく、通常、接続はこの上限に達する前に完了します。
KeepAliveTimeout 15
KeepAliveTimeoutは、サーバーがリクエストを完了したが、クライアントプログラムから次のリクエストを受信していない場合、その間隔がこのパラメータで設定された値を超えた場合にテストします。サーバーが切断されます。