お金をかけずにサーバーの勉強をしよう

Tomcatを GUIで管理する

2024年1月7日

メニューへ戻る

Tomcatの GUIの管理画面を使ってみます。

Tomcatインストール」で Tomcatに自作のサーブレットプログラムをデプロイ(配備)する際に WARファイルを直接置く方法を使いました。

これもデプロイ方法の一つなのですが、Tomcatには GUIの管理画面もありますので、ここではそれを使ってみようと思います。

Tomcatのトップ画面にアクセスすると出てくるこの画面のボタンが管理画面へのリンクになってるんですが、
Tomcatトップ画面 1

押して見るとこのように権限不足で弾かれてしまいます。
アクセス拒否画面

読んでみると「管理画面は Tomcatが動いているサーバー以外からのアクセスを禁止している」となっています。

確かに私はクライアントPCからアクセスしていますので、弾かれるのが正しい動きです。

しかし Tomcatをインストールした Ubuntu Server 22.04.3は ウィンドウシステム(以下 GUI)をインストールしていませんので Webブラウザが動きません。

実際の環境でもサーバーOSでは GUIを使えないことが多いと思いますので、設定変更をしてネットワーク経由で管理画面を使えるようにします。


まず、管理画面がサーバー上でしか利用を許可されていない件です。
403エラーが出た際のメッセージにこのように書いてあります。

By default the Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Manager's context.xml file.

制限を外すには管理画面の [context.xml]ファイルを編集しろとありますね。


以下 Tomcatをインストールした Ubuntu Serverに [tomcat]ユーザーでログインしての作業です。

具体的にどこにある [context.xml]ファイルかというと、以下の 2つになります。

両ファイル共に以下の記載箇所が対象で、管理画面を利用するクライアントPCの IP(の範囲)を追加しました。
※[192.168.1.*] は我が家の LANアドレスです。

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  ↓
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.1.*" />

更に403エラーのメッセージを読み進めると [conf/tomcat-users.xml]ファイルを編集するように書いてあります。

[/usr/local/apache-tomcat-10.1.17/conf/tomcat-users.xml]ファイルのコメントにロールについての記載があり、GUI画面を使うには [manager-gui]ロールを持つユーザーを定義すれば良いようです。

コメント中に [admin]ユーザーの定義例がありましたので、それを真似て [subro]ユーザーとし、ファイルの最後の行の 1つ上(タグ内の最終行)に 1行追加しました。
パスワードは適当です。

</tomcat-users>
  ↓
  <user username="subro" password="ne7i-r1j0s1" roles="manager-gui"/>
</tomcat-users>

Tomcatを再起動します。

tomcat@UbuntuServer2204-1:~$ /usr/local/apache-tomcat-10.1.17/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat-10.1.17
Using CATALINA_HOME:   /usr/local/apache-tomcat-10.1.17
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-10.1.17/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-10.1.17/bin/bootstrap.jar:/usr/local/apache-tomcat-10.1.17/bin/tomcat-juli.jar
Using CATALINA_OPTS:

tomcat@UbuntuServer2204-1:~$ /usr/local/apache-tomcat-10.1.17/bin/startup.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat-10.1.17
Using CATALINA_HOME:   /usr/local/apache-tomcat-10.1.17
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-10.1.17/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-10.1.17/bin/bootstrap.jar:/usr/local/apache-tomcat-10.1.17/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

再起動できました。

改めてServer Stausを押してみると、
Tomcatトップ画面 1

ユーザーとパスワードを聞いてくるようになりました。
先程作ったユーザーとパスワードでログインしてみます。
マネージャー画面ログイン

こんな画面で Tomcatの状態を得られるようになりました。 ステータス画面

今度はManager Appを押してみます。
Tomcatトップ画面 2

この画面でサーブレットのデプロイ(配備)や削除ができます。
インストール時にデプロイした「HelloServlet」を削除してみます。
対象行の配備解除を押します。 サーブレット管理画面 1

何の警告もなく削除されてしまいました。
結構アブないです。
今度はクライアントPCにある warファイルをデプロイ(配備)してみます。
下の方の参照…を押します。
サーブレット管理画面 2

[HelloServlet.war]ファイルを選択しました。
配備を押します。
サーブレット管理画面 3

「HelloServlet」が現れました。
サーブレット管理画面 4


Tomcatの GUIでの管理はこんな体でできます。

慣れてきてしまうと単に warファイルを配置する方が楽だったりして、段々とこの管理画面を使わなくなっちゃうんですよね。

他に管理用の APIも使えますから、CI/CDの観点からも此の画面はやはり使わなくなってしまうかなと。

でも「黒い画面は苦手!」な人はこれで管理しても良いです。

存在しているリンクを全部踏んでみて、どんな機能があるのか見てみるのも楽しいと思います。