server.xmlの概要

%CATALINA_HOME%¥conf¥server.xmlファイルは、Tomcatサーバーが利用するソケット(コネクション)や
バーチャルホスト又はホスト名別に管理するアプリケーションの配備ディレクトリを指定したり、
Tomcatサーバーのアクセスログを指定する等Tomcatの動作を決めるための最も重要な主設定ファイルです。

尚、本書で利用した環境は、以下となります。

  • OS:Windows10
  • JavaSE:Java1.8.0_141
  • Tomcat:Tomcat8.5.16

server.xmlの概要図

Tomcatの設定ファイルserver.xmlの概要図

※.全体構成を分かり易くするためにServerタグ配下に定義するListenerタグ及びGlobalNamingResourcesタグ等は割愛しています。

server.xmlのデフォルトファイル構成

Tomcat8.5.16をインストールした直後のデフォルトのserver.xmlファイルからコメント行を取り除いたのが以下になります。

server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" >
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" >

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
      
      	<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             	resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>
					

server.xmlについてタグ要素の詳細説明の前に、デフォルトの状態から要点となる設定箇所について説明します。

Tomcatのデフォルトポート

Tomcatのserver.xmlのデフォルト値を利用すると以下のポート番号が利用されます。

ポート番号 デフォルト状態 説明
8080 有効 HTTP通信のためのポート番号
Webサーバーと連携しない単体の場合には、
Webブラウザから「http://localhost:8080」と指定することでアクセスできます。
8443 コメントアウト(無効) HTTPS通信のため
8009 有効 AJPプロトコルのためのポート番号
AJPは、ApacheHttpServerとTCP/IP通信をするために最適化されたプロトコルです。
ApacheHttpServerとTomcatとの連携箇所は別頁にて詳しく説明します。
8005 有効 Tomcat停止[ShutDown]用
※.TCP/IPプロトコルから8005にアクセスし、「SHUTDOWN」文字列を送るととTomcatは停止します。

ポート番号は、OSがソケット通信から通信データを受け取るプログラムを識別するためにのに0~65535の中から一意に付与できます。
Tomcatのサービスを起動した場合上記8080,8443,8009,8005はTomcat専用のためのポート番号となり、
他のサービスがそのポート番号をサービスとして利用できない事を意味します。

Host概要

server.xmlからHostタグ部抜粋
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>
					

Hostタグは、仮想ホスト(バーチャルホスト)別にHostタグを明示します。デフォルトでは、localhostの1つが定義されています。
HostタグのappBase属性は、仮想ホスト別に管理するWebアプリケーションを配備するディレクトリを指定しています。
appBase属性は、絶対パスと%CATALINA_BASE%からの相対パス形式で指定します。
デフォルト値では、webappsが指定されておりC:¥developer¥webap¥Tomcat¥tomcat_8.5.16¥webappsを意味します。
※.本サイトのTomcat-インストール(Windows)利用時。

Webアプリケーションのサーブレットのサンプルを作成して、webappsディレクトリに配備した理由になります。

Hostタグの子要素としてValueタグが設定されています。
Valueタグは、各種設定として用いられる柔軟性の高いタグですが、ここではアクセスログの設定に利用しています。
Hostタグで指定された仮想ホストに対するHttp通信のアクセスログをValueタグで指定したファイル名、出力先、フォーマットで出力します。

server.xmlの管理ポリシー

Tomcatの主設定ファイルであるserver.xmlはサーバーの運用実績に応じて変更がかかり易い設定ファイルの1つです。
運用時には以下の点を留意して運用します。

  • コメントタグは簡潔に分かり易く記述する。
  • 過去の設定値をコメントアウトしたタグは一切記載しない。
  • 本番機導入時点からgit等などのバージョン管理ツールを利用して、履歴を管理する。
  • 機能していない設定を記述しない。
  • 可読性を維持するためにインデントを保つ。
  • 何故その設定値にしたのかが分かる運用ドキュメント(サーバー鳥瞰図、ネットワーク構成図、Tomcatサーバー設定書等)を整備する。
  • アクセスログの設計はシステムの運用性に関係とても重要。