コンテンツにスキップ

Apache Tomcat

出典: フリー教科書『ウィキブックス(Wikibooks)』

Apache Tomcatは、JavaサーブレットJavaServer Pages (JSP)の実装を提供するオープンソースのWebアプリケーションサーバーです。Apache Software Foundationによって開発されており、Java EE仕様の一部を実装しています。

インストールと設定

[編集]

システム要件

[編集]

インストール手順

[編集]
  1. Apache Tomcatの公式サイトから適切なバージョンをダウンロード
  2. ダウンロードしたアーカイブを解凍
  3. JAVA_HOMEとCATALINA_HOME環境変数を設定
  4. binディレクトリ内のスタートアップスクリプトを実行

基本設定

[編集]

server.xmlは主要な設定ファイルで、以下の要素を含みます:

  • Connector - HTTPおよびAJPプロトコルの設定
  • Engine - リクエスト処理エンジンの設定
  • Host - バーチャルホストの設定
  • Context - Webアプリケーションのコンテキスト設定

アプリケーションのデプロイ

[編集]

デプロイ方法

[編集]
  • WARファイルの配置
  • webappsディレクトリへの展開
  • Tomcat管理画面からのデプロイ
  • server.xmlでのContext定義

デプロイメント構造

[編集]
標準的なWebアプリケーション構造
ディレクトリ 目的
/WEB-INF 設定ファイルとクラスファイル
/WEB-INF/classes Javaクラスファイル
/WEB-INF/lib JAR依存ライブラリ
/ 静的コンテンツ

セキュリティ設定

[編集]

ユーザー認証

[編集]

tomcat-users.xmlでの設定例:

tomcat-users.xml
<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="admin" password="password" roles="manager-gui"/>
</tomcat-users>

SSLの設定

[編集]

server.xmlでのコネクタ設定例:

server.xml
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="${user.home}/.keystore" keystorePass="changeit"
    clientAuth="false" sslProtocol="TLS"/>

パフォーマンスチューニング

[編集]

JVMの最適化

[編集]
  • -Xms: 初期ヒープサイズ
  • -Xmx: 最大ヒープサイズ
  • -XX:MaxPermSize: Permanent領域の最大サイズ

コネクタの最適化

[編集]
  • maxThreads: 最大スレッド数
  • acceptCount: 接続キューサイズ
  • connectionTimeout: 接続タイムアウト

トラブルシューティング

[編集]

一般的な問題

[編集]
  • メモリ不足エラー
  • 接続タイムアウト
  • クラスローディングの問題
  • パーミッションエラー

ログの確認

[編集]

主要なログファイル:

  • catalina.out: 標準的なログファイル
  • localhost.log: アプリケーション固有のログ
  • manager.log: 管理機能のログ
  • host-manager.log: ホストマネージャのログ

高度な設定

[編集]

クラスタリング

[編集]

複数のTomcatインスタンスを構成する際の設定例:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
         channelSendOptions="8">
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
             expireSessionsOnShutdown="false"
             notifyListenersOnReplication="true"/>
</Cluster>

ロードバランシング

[編集]
  • mod_jkを使用したApache HTTP Serverとの連携
  • AJPプロトコルの設定
  • セッションレプリケーション

参考資料

[編集]