Tomcatのサーバ設定

2007年12月14日(金)
羽倉 敬

Tomcatの設定ファイル「server.xml」

第7回:Tomcat Webアプリケーションマネージャを使ってみよう!」 では、Tomcat WebアプリケーションマネージャによるWebアプリケーション管理について紹介しました。今回はTomcatの設定ファイルであるServer.xml について解説します。また、同様の設定をWebブラウザから行える管理ツールTomcat Administration Toolについて紹介します。

server.xmlによるTomcatの基本設定

CATALINA_HOME/conf/server.xmlは、Tomcatのメインの設定ファイルであり、Tomcat起動時に読み込まれま す。CATALINA_HOME/conf/ディレクトリにはデフォルトのserver.xmlの他に、最小限の設定だけが書かれたテンプレートserver-minimal.xmlが用意されています。新規にサーバの設定を書き起こす場合はserver-minimal.xmlをリネームして用いるのが便利です。

server.xmlの構造

Tomcatはいくつかのコンポーネントで構成されており、server.xmlではXMLの要素を通じて各コンポーネントを定義しています。server.xmlの要素は図1のようなツリー構造をもっています。

上位の属性は、自動的に下位の要素に継承されます。例えば、<Host>の子要素<Logger>の属性に何も指定しない場合、<Engine>の子要素の<Logger>の設定が使用されます。カスタマイズが必要な場合は、の子要素に独自の設定を持たせることで、上位の設定を上書きできます。



図1:server.xmlの構造
図1:server.xmlの構造

では、server.xmlで設定できるそれぞれの要素について解説していきます。

<Server>要素

Tomcatサーバコンポーネント定義です。デフォルトでは「」となっており、ポート8005を監視してshutdownコマンドを受け付けるように設定されています。サーバには複数のサービスを関連付けることができます。

<Service>要素

サービスコンポーネントを定義しています。サービスは後述するエンジンとそれに繋がるすべてのコネクタをグループ化したものです。デフォルトでは「<service name=""Catalina">」となっています。
name属性で「Catalina」という名前でサービスが定義されており、エラーログや管理ツールはこの名前でサービスを識別します。1つのサーバに複数のサービスを定義する場合、異なるname属性をつける必要があります。
サービスにはエンジンと1つ以上のコネクタを関連付けることができます。サービスとエンジンの関係は1:1です。サービスコンポーネントを定義しています。サービスは後述するエンジンとそれに繋がるすべてのコネクタをグループ化したものです。デフォルトでは「<service>」

<Engine>要素

エンジンはサーブレットコンテナのインスタンスをあらわし、コネクタから送られてくるリクエストを処理します。デフォルトでは「<Engine name="Catalina" defaultHost="localhost">」となっています。

name属性はエンジンの名前をあらわし、エラーログや管理ツールはこの名前でエンジンを識別します。defaultHost属性はserver.xmlに定義されていないホストにリクエストがあった場合の送り先となる仮想ホストを指定します。エンジンには1つ以上のホストが関連付けられます。

<Connector>要素

リクエストをエンジンに渡す役割をするのがコネクタです。サービスは1つ以上のコネクタを持つ必要があります。
ユーザはHTTPやHTTPS/SSLなどさまざまな手段でエンジンにリクエストを送ります。これらの接続要件への対処はコネクタコンポーネントに任されます。各プロトコルに対応した複数のコネクタを持つことで、どのような接続でリクエストが送られてきてもエンジンが同様に処理し、レスポンスをコネクタに任せることができます。
Tomcatにはいくつかの標準コネクタが搭載されています。デフォルトではHTTP 1.1コネクタとAJPコネクタが有効(コメントアウトされていない状態)になっています。

<DefaultContext>要素

すべてのコンテキスト共通の定義です。デフォルトでは設定されていません。

<Realm>要素

レルムはセキュリティのためのロール名とユーザ名、パスワードのマッピングを外部のデータソースから取り出す仕組みです。TomcatはUserDataBase、Memory、JDBC、JNDIなどいくつかのレルムを持っています。
各レルムの違いはどこから情報を取り出すかの違いでしかありません。デフォルトではUserDataBase以外のレルムはコメントアウトされて無効になっています。

株式会社ビーブレイクシステムズ

千葉大学法経学部卒業。大学時代よりオープンソースに興味を持ち、オープンソース専業ベンダーのビーブレイク システムズに入社。現在に至る。また、現在は社内技術サークルの中心メンバーとして日々提案・啓蒙活動を行う。座右の銘は「自らが求めてつくらなければ、 自身が求めるものはできない」

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています