2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成

1,425 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,425
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2 TomcatによるWebアプリケーションサーバ構築 第3章 Apacheの構成

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

×