2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成
Transcript of 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成
![Page 1: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/1.jpg)
この章では、HTTPサーバーであるApacheの構造(構成情報およびコンテンツ情報)と、構成ファイルの主な設定項目(ディレクティブ)について学習します。また、メイン・サーバー以外に、仮想ホストを設定する場合の定義方法についても学習します。
![Page 2: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/2.jpg)
Apacheは構成情報やコンテンツ情報をいくつかのフォルダに分けて保管しています。 具体的な場所はプラットフォームによって異なりますが、WindowsではApacheをインストールしたフォルダ(ここでは< apache-root >と表現します)の下に、 それぞれのフォルダが作成され、保管されています。Apache の公式サイトでは、/usr/local/apache/ の下となっています。
![Page 3: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/3.jpg)
(参考)Windowsの場合は、ServerRoot はApacheのインストール・フォルダ(例えばC:\Program Files\Apache Software Foundation\Apache2.2\)になりますが、 Apache のドキュメントでは/usr/local/apache となっています。
![Page 4: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/4.jpg)
(参考)Windowsの場合は、DocumentRoot はApacheのインストール・フォルダ下のhtdocs\になりますが、 Apache のドキュメントでは/usr/local/apache/htdocs/ となっています。
![Page 5: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/5.jpg)
Apacheの構成は、ServerRootであるApacheのインストール・フォルダの下のconf\httpd.confファイルで設定します。 httpd.confはテキスト・ファイルで、3つのセクションから構成されています(ただし、Windowsのhttpd.confファイルでは明示されていません)。設定項目のことをディレクティブと呼びます。なお、Windowsの設定ファイルにおいても、フォルダ・パスを指定する際に、\は使用せず/を使用します。
![Page 6: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/6.jpg)
■セクション1: Global Environment サーバー構成全体に対する属性を指定・ServerRootフォルダの位置 ・ポート番号・使用するモジュール・Apacheの実行に使用するユーザーID 等
![Page 7: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/7.jpg)
■セクション2: 'Main' server configration メイン・サーバーの定義・サーバー管理者のメール・アドレス・DocumentRootフォルダの位置・ログ・ファイルの構成 等
![Page 8: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/8.jpg)
■セクション3: その他の定義 conf\extra\以下の*.confファイルに定義・サーバー・プール・サイズの設定・仮想ホストの定義・SSLの定義 等
![Page 9: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/9.jpg)
サーバー全体の構成情報であるセクション1の主なディレクティブです。
![Page 10: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/10.jpg)
メイン・サーバーの設定を行うセクション2の主なディレクティブです。
![Page 11: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/11.jpg)
メイン・サーバーの設定を行うセクション3の主なディレクティブです。
![Page 12: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/12.jpg)
上記のディレクティブを用いて、Apacheのパフォーマンスが損なわれないように調整します。1リクエストに対し1つの子プロセスが対応するタイプをpreforkモデル、 1リクエストに対し1つのスレッドが対応するタイプをworkerモデルといい、それぞれに対応したモジュールが組み込まれます。Windowsでのデフォルトはmpm_winntモジュールで、1つの子プロセスしか持たず、デフォルトでは64個のスレッドを持ちます。
![Page 13: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/13.jpg)
サービスの起動時に、StartServersで指定した数でプロセスを起動しておき、ThreadsPerChildで指定した数のスレッドをプロセスごとに生成します。
![Page 14: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/14.jpg)
リクエストによりスレッドがビジーになり、アイドルのスレッドが MinSpareThreadsの数を割り込むと、 アイドルスレッド数がこの数よりも大きくなるまで新しい子プロセスが生成されます。 リクエストの増加によりアイドルプロセスが多数存在するとリソースが消費されるため、MaxSpareThreadsの数を上回らないようにプロセス数が調整されます。また、プロセスの最大数はMaxClientsで指定した数を上回ることはありません。preforkモデルは、スレッドがプロセスに対応するのみで、同様のことがいえます。
![Page 15: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/15.jpg)
各プロセスは、MaxRequestsPerChildの数に到達するまでリクエストを処理し、到達するとそのプロセスは終了します。 この値が0に設定されていると、終了することはありません。
![Page 16: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/16.jpg)
エイリアスは、標準のDocumenRoot以外の場所を公開したい場合に用います。 リクエストされたURLのうち、サーバー名の後のリクエストされたコンテキストに対応したフォルダを設定します。 構文: Alias リクエストされたコンテキスト 対応するコンテンツのあるフォルダ必要に応じて< Directory 絶対パス="" > ~ < /Directory >で、アクセス制御を設定します。
![Page 17: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/17.jpg)
仮想ホストとは、1つのHTTPサーバー上に複数のWebサイトがあるように見せかける機能です。IPベースの仮想ホストと名前ベースの仮想ホストがあり、そのいずれかまたは両方を使用することができます。IPベースの仮想ホストは、Webサーバーが複数のIPアドレスを持つ必要があります。リクエストされたIPアドレスにしたがって、適切なコンテンツを返します。名前ベースの仮想ホストは、HTTPサーバーは1つのIPアドレスを持てばよく、リクエストされたURI(サーバーのFQDN)にしたがって、適切なコンテンツを返します。
![Page 18: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/18.jpg)
まず、1つのApacheで構成するIPベースの仮想ホストを説明します。Webサーバーには複数のIPアドレスが設定され、DNSサーバー等によって名前解決される必要があります。ブラウザからリクエストされたURIのサーバー名は、DNSサーバー等に問い合わせが行われ、名前解決されたIPアドレスでHTTPサーバーにリクエストします。Apacheは設定されているアドレスおよびポートを聴取します。リクエストがそれぞれのIPアドレスおよびポートに到着すると、そのアドレスに対応するDocumentRootのコンテンツをブラウザに返します。
![Page 19: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/19.jpg)
![Page 20: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/20.jpg)
< VirtualHost FQDN="" | IPアドレス:ポート="" > から始まり、< /VirtualHost >までが1つの仮想ホストの定義になります。それぞれの仮想ホストごとのコンテンツの場所をDocumentRootディレクティブで指定します。IPアドレスが同じでも、異なったポートで複数の仮想ホストを運用することも可能です。ServerName、ServerAdmin、ErrorLog、CustomLog もサーバーごとに設定しておいたほうが管理上好ましいでしょう。
![Page 21: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/21.jpg)
![Page 22: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/22.jpg)
名前ベースの仮想ホストは、DNS等により名前解決される仕組みはもちろん必要ですが、ブラウザによってリクエストされたサーバーの名前がリクエストのHTTPヘッダーのHostフィールドに含まれている必要があるため、HTTP 1.1をサポートするブラウザおよびHTTPサーバーでなければなりません。
![Page 23: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/23.jpg)
名前ベースの仮想ホストを使うには、そのホストへのリクエストを受け付けるサーバーのIPアドレスおよびポートを、NameVirtualHostディレクティブで指定する必要があります。NameVirtualHost *でサーバーの全てのIPアドレスを指定することもできます。 NameVirtualHostディレクティブで IP アドレスを書いても、 自動的にサーバがその IPアドレスをリッスンするということはないことに 注意してください。Listenディレクティブで聴取するように設定されている必要があります。
![Page 24: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/24.jpg)
さらに、< VirtualHost IPアドレス:ポート >で、NameVirtualHostと同じIPアドレスおよびポートを指定します。< VirtualHost >ディレクティブには、最低限、どのホストが扱われるかを示すServerNameディレクティブと、そのホスト用のコンテンツがファイル・システム上のどこにあるかを示すDocumentRootディレクティブを書く必要があります。IPベースと同じように、ServerAdmin、ErrorLog、CustomLogもサーバーごとに設定しておいたほうが管理上好ましいでしょう。
![Page 25: 2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成](https://reader031.fdocuments.net/reader031/viewer/2022013114/556a1a5dd8b42af0198b5354/html5/thumbnails/25.jpg)