Apache Tomcatとは?初心者でもわかる導入から運用まで完全ガイド【2024年版】

Apache Tomcatとは?基礎知識を解説

Javaアプリケーションサーバーの定番ツール

Apache Tomcatは、JavaサーブレットとJavaServer Pages(JSP)の実行環境を提供するオープンソースのWebアプリケーションサーバーです。多くの開発者やエンタープライズで採用されている実績があり、以下のような特徴を持っています:

Apache Tomcatの特徴
  • 軽量で高速:必要最小限の機能に絞った設計
  • オープンソース:Apache Software Foundationが開発・管理
  • 豊富な実績:20年以上の開発実績と広大なユーザーコミュニティ
  • 容易な導入:シンプルな構成で学習コストが低い

主な用途

  1. Webアプリケーションの実行環境
  2. RESTful APIサーバー
  3. マイクロサービスのコンテナ
  4. 静的コンテンツの配信

Apache TomcatとApache HTTPサーバーの違い

初心者がよく混乱する点として、Apache TomcatとApache HTTPサーバー(Apache HTTP Server)の違いがあります。以下の表で主な違いを整理します:

項目Apache TomcatApache HTTPサーバー
主な用途Javaアプリケーション実行静的コンテンツ配信
対応言語JavaPHP, Perl, Python等
アーキテクチャサーブレットコンテナHTTPサーバー
ポート番号8080(デフォルト)80(デフォルト)
設定ファイルserver.xml, web.xmlhttpd.conf

バージョン別の特徴と選び方

Apache Tomcatの主要バージョンとその特徴を理解することは、プロジェクトに適したバージョンを選択する上で重要です。

最新の主要バージョン(2024年現在)

  • Tomcat 10.x
    • Jakarta EE 9+に対応
    • Java 11以上が必要
    • 最新のセキュリティ機能
  • Tomcat 9.x
    • Java EE 8に対応
    • Java 8以上で動作
    • 広く普及している安定版
  • Tomcat 8.5.x
    • Java EE 7に対応
    • Java 7以上で動作
    • レガシーシステムとの互換性重視

バージョン選択のポイント

  1. プロジェクトの要件
    • 使用するJavaのバージョン
    • 必要なサーブレット仕様のバージョン
    • 利用するフレームワークの対応状況
  2. 運用環境の制約
    • サーバーのスペック
    • セキュリティ要件
    • 他システムとの連携
  3. サポート期間
    • セキュリティアップデートの提供期間
    • コミュニティサポートの活発さ

実務では、以下のような選択基準が一般的です:

  • 新規プロジェクト → Tomcat 10.x
  • 既存システムの改修 → Tomcat 9.x
  • レガシーシステムの維持 → Tomcat 8.5.x

これらの基礎知識を踏まえた上で、次のセクションではTomcatの具体的なインストール方法と初期設定について解説します。

Apache Tomcatのインストールと初期設定

Windows環境での導入手順

前提条件

  1. Java Development Kit (JDK) のインストール
  2. JAVA_HOME環境変数の設定
  3. システム管理者権限の取得

インストール手順

  1. Apache Tomcatのダウンロード
  2. インストーラーの実行
   # 管理者として実行
   apache-tomcat-10.1.xx.exe
  1. 環境変数の設定
   # システム環境変数に追加
   CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat 10.1
   Path=%Path%;%CATALINA_HOME%\bin
  1. 動作確認
    • Windowsサービスで「Apache Tomcat」を起動
    • ブラウザで http://localhost:8080 にアクセス

Linux環境での導入手順

前提条件

# JDKのインストール(Ubuntu/Debianの場合)
sudo apt update
sudo apt install default-jdk

# JAVA_HOMEの設定
echo "export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" >> ~/.bashrc
source ~/.bashrc

インストール手順

  1. Tomcatユーザーの作成
sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
  1. Tomcatのダウンロードと展開
# 最新版のダウンロード
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.xx/bin/apache-tomcat-10.1.xx.tar.gz

# 展開とインストール
sudo tar xf apache-tomcat-10.*.tar.gz -C /opt/tomcat
sudo ln -s /opt/tomcat/apache-tomcat-10.* /opt/tomcat/latest
sudo chown -R tomcat: /opt/tomcat
  1. システムサービスの設定
# サービスファイルの作成
sudo nano /etc/systemd/system/tomcat.service

# 以下の内容を記述
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/default-java
Environment=CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat/latest
Environment=CATALINA_BASE=/opt/tomcat/latest

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target
  1. サービスの起動
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat

基本的な設定ファイルの解説

server.xml

Tomcatのメイン設定ファイルで、以下の重要な要素を含みます:

<!-- ポート番号の設定 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

<!-- アプリケーションのコンテキスト設定 -->
<Context path="/myapp" docBase="myapp"
         reloadable="true">
</Context>

<!-- アクセスログの設定 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs"
       prefix="localhost_access_log" 
       suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />

web.xml

アプリケーション全体の設定ファイルです:

<!-- セッションタイムアウトの設定 -->
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

<!-- エラーページの設定 -->
<error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
</error-page>

<!-- セキュリティ制約の設定 -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Secured Pages</web-resource-name>
        <url-pattern>/secure/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

tomcat-users.xml

管理者アカウントの設定ファイルです:

<tomcat-users>
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="admin" 
          password="[secure-password]" 
          roles="manager-gui,admin-gui"/>
</tomcat-users>

初期設定での注意点

  1. セキュリティ
    • デフォルトパスワードの変更
    • 不要なポートの閉鎖
    • 管理画面へのアクセス制限
  2. パフォーマンス
    • JVMのメモリ設定
    • コネクションプールの最適化
    • 不要なサービスの無効化
  3. ログ設定
    • ログローテーションの設定
    • アクセスログの有効化
    • エラーログレベルの調整

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

WARファイルによるデプロイ

WARファイルの基本

WARファイル(Web Application Archive)は、Javaのウェブアプリケーションを配布・デプロイするための標準的なパッケージ形式です。

WARファイルの構造

myapp.war
├── META-INF/
│   └── MANIFEST.MF
├── WEB-INF/
│   ├── web.xml
│   ├── classes/
│   └── lib/
└── [Webコンテンツ]

デプロイの方法

  1. 管理コンソールを使用したデプロイ
    • 「WAR file to deploy」セクションでファイルを選択
    • 「Deploy」ボタンをクリック
    • デプロイ状況を確認
   # 管理コンソールへのアクセスURL
   http://localhost:8080/manager/html
  1. ファイルシステムを使用したデプロイ
   # WARファイルをwebappsディレクトリにコピー
   cp myapp.war $CATALINA_HOME/webapps/

   # デプロイ状況の確認
   tail -f $CATALINA_HOME/logs/catalina.out
  1. Mavenを使用したデプロイ
   <!-- pom.xmlの設定 -->
   <plugin>
       <groupId>org.apache.tomcat.maven</groupId>
       <artifactId>tomcat7-maven-plugin</artifactId>
       <version>2.2</version>
       <configuration>
           <url>http://localhost:8080/manager/text</url>
           <server>TomcatServer</server>
           <path>/myapp</path>
       </configuration>
   </plugin>
   # Mavenコマンドでデプロイ
   mvn tomcat7:deploy

開発環境でのホットデプロイ設定

context.xmlの設定

<Context reloadable="true" antiResourceLocking="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/classes</WatchedResource>
</Context>

server.xmlでの設定

<Context path="/myapp" docBase="myapp"
         reloadable="true" antiResourceLocking="true">
    <Resources cachingAllowed="true" cacheMaxSize="100000" />
</Context>

IDE連携の設定

  1. Eclipse
    • Tomcatサーバーの追加
    • プロジェクトのファセット設定
    • 自動デプロイの有効化
  1. IntelliJ IDEA
    • Run/Debug Configurationsの設定
    • 「Update classes and resources」の有効化
    • On frameの自動デプロイ設定

デプロイ時の注意点と対策

1. メモリリーク対策

<!-- context.xmlでの設定 -->
<Context>
    <Manager className="org.apache.catalina.session.PersistentManager"
             maxIdleSwap="1">
        <Store className="org.apache.catalina.session.FileStore"
               directory="sessions"/>
    </Manager>
</Context>

2. クラスローダーの問題対策

  • 共通ライブラリの配置
  $CATALINA_HOME/lib/    # 共通ライブラリ
  WEB-INF/lib/          # アプリケーション固有のライブラリ
  • クラスローダーの設定
  <Context>
      <Loader delegate="true"/>
  </Context>

3. デプロイのチェックリスト

  • [ ] メモリ使用量の確認
  • [ ] セッション管理の設定確認
  • [ ] ログ出力の設定確認
  • [ ] セキュリティ設定の確認
  • [ ] バックアップの作成
  • [ ] ロールバック手順の準備

4. トラブルシューティング

問題原因対策
デプロイ失敗メモリ不足JVMメモリ設定の見直し
クラスエラーライブラリ競合クラスパスの確認と修正
起動遅延リソース読み込み不要なファイルの削除
セッション切れタイムアウト設定セッション設定の調整

デプロイのベストプラクティス

  1. 段階的なデプロイ
    • 開発環境
    • テスト環境
    • ステージング環境
    • 本番環境
  2. バージョン管理
   # バージョン付きWARファイル
   myapp-1.0.0.war

   # バックアップの作成
   cp myapp.war myapp.war.bak
  1. モニタリング設定
   <!-- server.xmlでの監視設定 -->
   <Valve className="org.apache.catalina.valves.AccessLogValve"
          directory="logs"
          prefix="localhost_access_log"
          suffix=".txt"
          pattern="%h %l %u %t &quot;%r&quot; %s %b %D" />

実践的な運用管理とチューニング

メモリ設定の最適化方法

JVMメモリ設定

  1. 基本的なメモリパラメータ
# catalina.shまたはsetenv.bat/shでの設定
JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
メモリパラメータの推奨値:
パラメータ説明推奨値
-Xms初期ヒープサイズ使用可能メモリの50%
-Xmx最大ヒープサイズ使用可能メモリの70%
MetaspaceSize初期メタスペース256MB
MaxMetaspaceSize最大メタスペース512MB
  1. ガベージコレクション設定
# G1GCの設定例
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

# GCログの有効化
JAVA_OPTS="$JAVA_OPTS -Xlog:gc*:file=/path/to/gc.log:time,uptime:filecount=5,filesize=100m"

メモリリーク検出

# JVMのヒープダンプ取得
jmap -dump:format=b,file=heap.bin <PID>

# メモリ使用状況の確認
jstat -gcutil <PID> 1000

スレッドプールの設定と監視

Connectorの設定最適化

<!-- server.xmlでのConnector設定 -->
<Connector port="8080" protocol="HTTP/1.1"
           maxThreads="400"
           minSpareThreads="50"
           maxConnections="10000"
           acceptCount="100"
           connectionTimeout="20000"
           enableLookups="false"
           maxKeepAliveRequests="100"
           keepAliveTimeout="60000" />
設定値の目安:
パラメータ説明計算式
maxThreads最大スレッド数CPU論理コア数 × 50
minSpareThreads最小待機スレッドmaxThreadsの25%
maxConnections最大接続数maxThreads × 2.5
acceptCount接続キューmaxThreadsの25%

スレッド監視ツール

  1. JConsole/JVisualVMでの監視
# JConsoleの起動
jconsole

# JVisualVMの起動
jvisualvm
  1. ThreadDumpの取得と分析
# ThreadDumpの取得
jstack <PID> > thread_dump.txt

# 定期的なThreadDump取得(5分間隔)
for i in {1..12}; do jstack <PID> > thread_dump_$i.txt; sleep 300; done

ログ管理とトラブルシューティング

ログ設定の最適化

  1. logging.propertiesの設定
# ログレベルの設定
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
     java.util.logging.ConsoleHandler,java.util.logging.FileHandler

# ファイルハンドラの設定
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/application.%g.log
java.util.logging.FileHandler.limit = 10485760
java.util.logging.FileHandler.count = 10
  1. log4j2.xmlの設定例
<Configuration>
    <Appenders>
        <RollingFile name="RollingFile"
                     fileName="logs/app.log"
                     filePattern="logs/app-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
</Configuration>

トラブルシューティングのベストプラクティス

  1. 問題の切り分け手順
    • アプリケーションログの確認
    • システムリソースの確認
    • ネットワーク状態の確認
    • JVMの状態確認
  2. よくある問題と対処法
症状確認項目対処方法
応答遅延スレッド状態スレッドプール設定の調整
メモリ不足ヒープ使用量JVMメモリ設定の見直し
CPU高負荷実行中タスク不要な処理の最適化
接続エラーネットワークタイムアウト設定の調整
  1. パフォーマンス分析ツール
# jfrの記録開始
jcmd <PID> JFR.start duration=60s filename=recording.jfr

# CPU使用率の確認
top -H -p <PID>

# IO状態の確認
iostat -x 1

運用監視のポイント

  1. 監視すべき主要メトリクス
    • スレッドプール使用率
    • メモリ使用量
    • レスポンスタイム
    • エラー発生率
    • アクティブセッション数
  2. アラート設定の目安
    • ヒープ使用率 > 85%
    • スレッドプール使用率 > 90%
    • レスポンスタイム > 3秒
    • エラー率 > 1%
  3. 定期メンテナンス項目
    • ログローテーション
    • 不要ファイルの削除
    • パフォーマンス指標の確認
    • セキュリティパッチの適用

セキュリティ対策と設定

基本的なセキュリティ設定

1. server.xmlの安全性強化

<!-- 重要な設定項目 -->
<Connector port="8080" protocol="HTTP/1.1"
           server="Apache"  <!-- サーバー情報を隠蔽 -->
           xpoweredBy="false"  <!-- X-Powered-By ヘッダーを無効化 -->
           allowTrace="false"  <!-- TRACEメソッドを無効化 -->
           secure="true"  <!-- セキュアな接続を強制 -->
           maxPostSize="2097152"  <!-- POSTサイズを制限 -->
           relaxedPathChars=""  <!-- 特殊文字を制限 -->
           relaxedQueryChars="" />

2. web.xmlでのセキュリティ設定

<!-- セキュリティ制約の設定 -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restricted Access</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<!-- セッションセキュリティ設定 -->
<session-config>
    <session-timeout>30</session-timeout>
    <cookie-config>
        <http-only>true</http-only>
        <secure>true</secure>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

3. セキュリティヘッダーの設定

<!-- context.xmlでの設定 -->
<Valve className="org.apache.catalina.valves.HeaderSecurityValve"
       hstsEnabled="true"
       hstsMaxAgeSeconds="31536000"
       hstsIncludeSubDomains="true"
       antiClickJackingEnabled="true"
       antiClickJackingOption="DENY"
       xssProtectionEnabled="true"
       blockContentTypeSniffingEnabled="true" />

SSLの設定方法

1. SSL証明書の生成と設定

# 自己署名証明書の生成(開発環境用)
keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks \
        -storepass changeit -keysize 2048 -validity 365

2. server.xmlでのSSL Connector設定

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
           keystoreFile="${catalina.home}/conf/keystore.jks" 
           keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"
           sslEnabledProtocols="TLSv1.2,TLSv1.3"
           ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
                    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" />

脆弱性対策とアップデート管理

1. 主な脆弱性対策

脆弱性タイプ対策方法設定例
XSSレスポンスヘッダー設定X-XSS-Protection: 1; mode=block
CSRFトークン検証@CsrfToken アノテーション使用
SQLインジェクションPreparedStatement使用JDBCテンプレート使用
ディレクトリトラバーサルパス検証normalized-path-check="true"

2. セキュリティアップデート管理

# バージョン確認
version.sh

# パッチ適用手順
# 1. バックアップ作成
cp -r $CATALINA_HOME $CATALINA_HOME.backup

# 2. アプリケーション停止
shutdown.sh

# 3. 新バージョンの配置
rm -rf $CATALINA_HOME/*
tar xzf apache-tomcat-x.x.xx.tar.gz -C $CATALINA_HOME --strip-components=1

# 4. 設定ファイルの移行
cp $CATALINA_HOME.backup/conf/* $CATALINA_HOME/conf/

# 5. 起動確認
startup.sh

3. セキュリティ監査チェックリスト

  • [ ] 最新のセキュリティパッチ適用
  • [ ] 不要なデフォルトアプリケーション削除
  • [ ] 管理者アカウントのパスワード強度確認
  • [ ] アクセスログの監視設定
  • [ ] ファイルパーミッションの確認
  • [ ] SSL/TLS設定の確認
  • [ ] セキュリティヘッダーの確認

4. セキュリティモニタリング設定

<!-- アクセスログバルブの設定 -->
<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i" 
       resolveHosts="false"/>

<!-- セキュリティ監査バルブの設定 -->
<Valve className="org.apache.catalina.valves.ExtendedAccessLogValve"
       directory="logs"
       prefix="security_audit_log"
       suffix=".txt"
       pattern="time=%t remoteHost=%h remoteUser=%u request=%r status=%s"/>

5. セキュリティベストプラクティス

  1. アクセス制御
    • 最小権限の原則適用
    • 不要なポートの無効化
    • 管理インターフェースの制限
  2. 認証・認可
    • 強力なパスワードポリシー
    • 多要素認証の導入
    • セッション管理の強化
  3. 暗号化
    • 強力な暗号スイートの使用
    • 適切な鍵長の選択
    • 証明書の定期的な更新
  4. 監視・ログ
    • リアルタイムモニタリング
    • ログの定期的な分析
    • インシデント対応手順の整備

運用環境での注意点とベストプラクティス

本番環境での設定推奨値

1. JVM設定最適化

# プロダクション環境向けJVM設定例
JAVA_OPTS="$JAVA_OPTS \
    -server \
    -Xms4g \
    -Xmx4g \
    -XX:MetaspaceSize=512m \
    -XX:MaxMetaspaceSize=512m \
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=200 \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=/var/log/tomcat/heapdump.hprof \
    -XX:+DisableExplicitGC \
    -Djava.security.egd=file:/dev/./urandom \
    -Djava.net.preferIPv4Stack=true"
推奨設定値の目安:
リソース小規模(~100req/s)中規模(~500req/s)大規模(1000req/s~)
Xms/Xmx2GB4GB8GB以上
MaxMetaspaceSize256MB512MB1GB
maxThreads200400800
acceptCount100200400

2. server.xml最適化

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="400"
           minSpareThreads="50"
           maxConnections="10000"
           acceptCount="200"
           connectionTimeout="20000"
           maxKeepAliveRequests="100"
           keepAliveTimeout="60000"
           enableLookups="false"
           tcpNoDelay="true"
           compression="on"
           compressionMinSize="2048"
           noCompressionUserAgents="gozilla, traviata"
           compressibleMimeType="text/html,text/xml,text/plain,text/css,
                                text/javascript,application/javascript,
                                application/json,application/xml" />

パフォーマンスモニタリング方法

1. 監視項目と閾値設定

監視項目警告閾値危険閾値監視間隔
CPU使用率70%90%1分
メモリ使用率80%90%1分
スレッド数maxThreads×0.8maxThreads×0.95分
レスポンスタイム3秒5秒1分
エラー率1%5%5分

2. モニタリングスクリプト例

#!/bin/bash

# JVMヘルスチェック
check_jvm_health() {
    local pid=$(pgrep -f "catalina")
    jstat -gcutil $pid 1000 5
    jmap -heap $pid
}

# スレッド状態監視
check_threads() {
    local pid=$(pgrep -f "catalina")
    jstack $pid > thread_dump_$(date +%Y%m%d_%H%M%S).txt
    grep "java.lang.Thread.State" thread_dump_*.txt | sort | uniq -c
}

# メトリクス収集
collect_metrics() {
    # CPU使用率
    top -bn1 | grep "Cpu(s)" | awk '{print $2}'

    # メモリ使用率
    free -m | grep "Mem:" | awk '{print $3/$2 * 100}'

    # ディスク使用率
    df -h | grep "/opt/tomcat" | awk '{print $5}'
}

3. 監視ダッシュボード設定

<!-- JMX設定 -->
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
          rmiRegistryPortPlatform="10001"
          rmiServerPortPlatform="10002" />

バックアップと災害対策

1. バックアップ戦略

#!/bin/bash

# 日次バックアップスクリプト
BACKUP_DIR="/backup/tomcat"
DATE=$(date +%Y%m%d)

# 設定ファイルのバックアップ
tar czf $BACKUP_DIR/conf_$DATE.tar.gz $CATALINA_HOME/conf/

# アプリケーションのバックアップ
tar czf $BACKUP_DIR/webapps_$DATE.tar.gz $CATALINA_HOME/webapps/

# ログのアーカイブ
tar czf $BACKUP_DIR/logs_$DATE.tar.gz $CATALINA_HOME/logs/

# 古いバックアップの削除(30日以上)
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

2. 災害復旧計画

  1. システム復旧手順
# 1. 新環境の準備
mkdir -p /opt/tomcat
cd /opt/tomcat

# 2. Tomcatの再インストール
tar xzf apache-tomcat-x.x.xx.tar.gz

# 3. バックアップからの復元
tar xzf conf_backup.tar.gz -C $CATALINA_HOME/
tar xzf webapps_backup.tar.gz -C $CATALINA_HOME/

# 4. 権限の設定
chown -R tomcat:tomcat $CATALINA_HOME
chmod -R 750 $CATALINA_HOME
  1. 復旧時間目標(RTO)達成のためのチェックリスト
    • [ ] バックアップの整合性確認
    • [ ] システム依存関係の確認
    • [ ] ネットワーク設定の復元
    • [ ] セキュリティ設定の確認
    • [ ] アプリケーション動作確認

3. 運用環境でのベストプラクティス

  1. 日常運用
    • 定期的なログローテーション
    • システムリソースの監視
    • セキュリティパッチの適用
    • パフォーマンス分析
  2. 障害対策
    • エラー検知の自動化
    • アラート通知の設定
    • 障害復旧手順の文書化
    • 定期的な復旧訓練
  3. パフォーマンス最適化
    • 定期的なキャッシュクリア
    • 不要セッションの破棄
    • データベース接続の最適化
    • 静的コンテンツのキャッシュ設定
  4. セキュリティ管理
    • アクセスログの分析
    • 脆弱性スキャンの実施
    • セキュリティポリシーの見直し
    • インシデント対応手順の更新

まとめ

Apache Tomcatは、Java Webアプリケーションの実行環境として広く使用されている信頼性の高いアプリケーションサーバーです。この記事では、以下の重要なポイントについて解説してきました:

  1. 基礎知識と選定
    • Tomcatの基本的な特徴と用途
    • Apache HTTPサーバーとの違い
    • プロジェクトに適したバージョンの選択方法
  2. 導入とデプロイ
    • Windows/Linux環境での適切なインストール方法
    • 効率的なアプリケーションデプロイ手順
    • 開発環境でのホットデプロイ設定
  3. 運用管理とパフォーマンス
    • メモリ設定の最適化方法
    • スレッドプールの適切な設定
    • 効果的なログ管理とトラブルシューティング
  4. セキュリティと安定運用
    • 基本的なセキュリティ設定
    • SSL/TLS設定による通信の暗号化
    • 脆弱性対策とアップデート管理
    • 本番環境での推奨設定とモニタリング

次のステップ

Tomcatの運用を始める際は、以下の順序で進めることをお勧めします:

  1. 開発環境での検証
    • 本記事の設定例を参考に基本的な環境を構築
    • アプリケーションのデプロイテスト実施
  2. ステージング環境での最適化
    • パフォーマンスチューニング
    • セキュリティ設定の適用
    • 監視の仕組み構築
  3. 本番環境への展開
    • バックアップ・リストア手順の確認
    • 運用手順書の整備
    • 監視・アラートの設定

Tomcatの設定や運用で困ったことがありましたら、Apache Tomcat公式ドキュメントApache Tomcatユーザーメーリングリストも参考になります。

記事全体を通して、実践的な設定例とベストプラクティスを提供してきましたが、実際の運用では、システムの規模や要件に応じて適切にカスタマイズすることが重要です。この記事が、皆様のTomcat運用の一助となれば幸いです。