7.

管理画面の開き方

編集
この記事の要点
  • Tomcat の管理画面(Manager App / Host Manager)の開き方
  • URL: http://localhost:8080/manager/html (Manager App)
  • URL: http://localhost:8080/host-manager/html (Host Manager)
  • デフォルトでは認証情報なしconf/tomcat-users.xml に追加が必要
  • ロール: manager-gui / manager-script / admin-gui

 

Tomcat 管理画面の種類

画面URL用途
Manager App/manager/htmlWeb アプリのデプロイ・停止・リロード
Manager Status/manager/statusサーバ状態(メモリ・スレッド・コネクタ)
Host Manager/host-manager/html仮想ホストの追加・削除
Tomcat Documentation/docsドキュメント
Tomcat Examples/examplesサンプル Servlet/JSP

初期状態でアクセスするとエラー

# http://localhost:8080/manager/html へアクセス
# → 401 Unauthorized
# または「403 Forbidden」「Access Denied」

# デフォルトではユーザが登録されていない
# tomcat-users.xml にユーザを追加する必要がある

ユーザ登録(tomcat-users.xml)

$CATALINA_HOME/conf/tomcat-users.xml を編集:

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <!-- ロール定義 -->
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>

    <!-- ユーザ定義 -->
    <user username="admin"
          password="strong-password-here"
          roles="manager-gui,manager-script,admin-gui,admin-script"/>

    <!-- API 操作専用 (Maven プラグイン等で使用) -->
    <user username="deploy"
          password="another-password"
          roles="manager-script"/>

</tomcat-users>

ロールの意味

ロール権限
manager-guiManager App の HTML 画面でデプロイ・停止・リロード
manager-scriptMaven 等のスクリプトから API でデプロイ
manager-jmxJMX 経由のサーバ管理
manager-statusサーバ状態画面のみ閲覧可
admin-guiHost Manager の HTML 画面
admin-scriptHost Manager の API

変更を反映

# Tomcat を再起動
$ $CATALINA_HOME/bin/shutdown.sh
$ $CATALINA_HOME/bin/startup.sh

# または systemd
$ sudo systemctl restart tomcat

リモートアクセスを許可する

デフォルトでは 127.0.0.1 からのみアクセス可。リモートから使いたい場合は許可リストを編集:

# Manager App の場合
# $CATALINA_HOME/webapps/manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true">
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                     sameSiteCookies="strict" />
    <!-- 元: allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" -->
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.1\.\d+" />
    <Manager sessionAttributeValueClassNameFilter="..." />
</Context>

本番環境ではセキュリティ上、リモート許可は避け SSH トンネル経由で接続することを推奨:

# SSH ポートフォワード
$ ssh -L 8080:localhost:8080 user@tomcat-server

# ローカルブラウザで http://localhost:8080/manager/html

Manager App で出来ること

  • アプリ一覧: デプロイ済みアプリの状態確認
  • Start / Stop: 個別アプリの起動・停止(Tomcat 自体は止めない)
  • Reload: アプリのクラスローダ再起動(コード変更反映)
  • Undeploy: アプリ削除(webapps/ から削除)
  • Deploy: WAR ファイル / フォルダ指定でデプロイ
  • Sessions: アクティブセッション数表示
  • Find leaks: メモリリークしているアプリ検出
  • SSL Certificate Chain: SSL 証明書情報

API でデプロイ(CI/CD 連携)

# WAR をデプロイ (manager-script ロール必要)
$ curl --user deploy:password \
    --upload-file myapp.war \
    "http://localhost:8080/manager/text/deploy?path=/myapp&update=true"

# アプリのリロード
$ curl --user deploy:password \
    "http://localhost:8080/manager/text/reload?path=/myapp"

# アンデプロイ
$ curl --user deploy:password \
    "http://localhost:8080/manager/text/undeploy?path=/myapp"

# 状態確認
$ curl --user deploy:password \
    "http://localhost:8080/manager/text/list"

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>tomcat</server>
        <path>/myapp</path>
    </configuration>
</plugin>

<!-- ~/.m2/settings.xml -->
<server>
    <id>tomcat</id>
    <username>deploy</username>
    <password>password</password>
</server>
# デプロイコマンド
$ mvn tomcat7:deploy
$ mvn tomcat7:redeploy
$ mvn tomcat7:undeploy

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

  • 強いパスワード: tomcat-users.xml は平文保存なので推測困難な値
  • 本番では Manager App 無効化: webapps/manager/ を削除 or noindex
  • 許可 IP の限定: RemoteAddrValve で社内 IP のみ
  • HTTPS 必須: 認証情報の盗聴防止
  • SSH トンネル経由: リモートアクセスは VPN or SSH 経由のみ
  • 監査ログ: アクセスログを定期チェック

関連記事

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. tomcatインストール(CentOS)
  2. WARファイルのAutoDeploy設定
  3. tomcatの起動/停止(Linux, Mac)
  4. JRE(JVM)のJavaのバージョン確認方法
  5. エラー一覧
  6. CATALINA_HOMEの確認方法(Linux, Mac)
  7. 管理画面の開き方
  8. tomcatの起動確認方法
  9. tomcatの起動/停止ログとcatalina.log/catalina.outの違い
  10. CentOSにおけるポート開放方法
  11. Javaのバージョン変更方法(Mac編)