[Tomcat]「Webアプリケーションマネージャ」を起動
◆Webアプリケーションマネージャとは?
Tomcat 4.1.xから導入されたGUI管理ツールです。
Tomcatの状態監視、Tomcatコンテキストの起動、停止、再ロード、
配信解除、アプリケーションのデプロイなどを行うことができます。
◆本記事のゴール
◆Webアプリケーションマネージャー画面
にWebブラウザからアクセス
◆事前準備
・「tomcat」
Tomcat 4.1.x以降であれば、
問題はないと思います。
本記事では、「Tomcat8」を使用しています。
・ダウンロードサイト
リンク先のページから、「Distributions」の「Core」にある
「zip」を選択するとダウンロードできます。
解凍したフォルダは、適当な場所においてください。
本記事では、「MacintoshHD/Users/(ユーザー名)」の直下に置いています。
・「開発ツール」や「Webアプリケーション」について
本記事を書くに当たっては、STS(Spring開発に必要なものを組み込んだEclipse)上で立てた
Tomcatのサーバーを使用しています。
STS上でたてたサーバーに、下記の記事で作成したSpringBootのプロジェクトをデプロイしています。Webアプリケーションの仕様としては、ウェブブラウザでアクセスした際に、「Hello World!」が表示されるだけです。
・[Spring]SpringBootで簡単なWebApp作成「Hello World!」
・[Spring Boot]組込みじゃないTomcatでSpring BootのWebAppを起動
「Webアプリケーションマネージャ」を起動するにあたっては、
サーバー側のファイルの設定を編集できればいいですし、
tomcatは、コマンドプロンプト上からでも起動できます。
なので、eclipseやSTSなどの開発ツールや、Webアプリケーションは、
絶対に用意する必要がある、というわけではありませんが、
用意したい場合は、上記の記事も参考にしていただければと思います。
◆手順を実施する前に
トップページが表示される場合は、
トップの「Manager App」のボタンを押すか、
のURLにアクセスすれば、ログイン認証の画面までは行けます。
手順の①は読み飛ばして問題ありません。
手順の②から行ってください。
そもそも、Tomcatのトップページにはつながる状態でしょうか。
もし、サーバーを起動した状態で、こちらにアクセスしても404が出る場合は、
以下の記事の内容を試してみてください。
それでも、表示されない場合は、手順①から行ってください。
アクセスできるようにWebアプリケーションマネージャの画面用のデータが入ったフォルダに
設定ファイルを編集して、紐づけする方法をご紹介しています。
◆手順
①マネージャ画面へアクセス用のURLの設定
作成方法ですが、
server.xmlを開き、
<Engine>
<Host >
</Host>
</Engine>
Hostタグの中に、
下記、のコードを追加します。
<Context docBase=“(Tomcatを配置してるディレクトリ)/webapps/manager" path="/manager" privileged="true" reloadable="true"/>
(Tomcatを配置してるディレクトリ)は、
Tomcatフォルダ内にあるwebappsまでのフルパスです。置き換えてください。
tomcatのフォルダの中のwebappsフォルダの中にあるmanagerフォルダの中に、
Webアプリマネージャを開くために必要なjspファイルなどがあります。
または、以下の書き方でも良いです。
「${catalina.home}」とは、
context.xml(アプリケーション登録情報)が配置されているディレクトリになります。
こちらは、書き換える必要はないのでオススメ。
<Context docBase="${catalina.home}/webapps/manager" path="/manager" privileged="true" reloadable="true"/>
server.xmlに該当コードの追加後は、下記のようになります。
※もともと書き込まれていた余計なコメントは削除しています。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="/Users/genki/apache-tomcat-8.5.78/conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
<Context docBase="demo" path="/demo" reloadable="false" source="org.eclipse.jst.jee.server:demo"/>
<!--追加箇所-->
<Context docBase="${catalina.home}/webapps/manager" path="/manager" privileged="true" reloadable="true"/>
<!--ここまで-->
</Host>
</Engine>
</Service>
</Server>
※設定を反映させるには、サーバーを再起動して下さい。
②マネージャ画面のログイン用ユーザー作成
マネージャ画面を開くには、
アクセス用の権限をもったユーザーをあらかじめ作成しておく必要があります。
ユーザーの作成方法ですが、
tomcat-users.xml開き、
<tomcat-users>
</tomcat-users>
の箇所に、
以下のコードを追加します。
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user password="hoge" username="hoge" roles="admin-gui,manager-gui"/>
<user username="admin" password="admin" roles="admin-gui"/>
<user username="manager" password="manager" roles="manager-gui"/>
ここでは、違う権限の持たせ方をしたuserを3つ作っています。
パスワードはどれも、ユーザ名と同じにしています。
ユーザ名とパスワードは任意で決めてください。
権限についてですが、
「hoge」⇨ admin権限+manager権限
「admin」⇨ admin権限
「manager」⇨ manager権限
と与えています。
マネージャ画面に対する、
ログインに必要な権限の対応は以下のようになっています。
・Webアプリケーションマネージャ⇨admin権限 or manager権限
tomcat-users.xmlファイルに、コードを追加すると下記のようになります。
※もともと書き込まれていた余計なコメントは削除しています。
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users version="1.0" 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">
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user password="hoge" username="hoge" roles="admin-gui,manager-gui"/>
<user username="admin" password="admin" roles="admin-gui"/>
<user username="manager" password="manager" roles="manager-gui"/>
</tomcat-users>
※設定を反映させるには、サーバーを再起動して下さい。
③Webブラウザからアクセス。
設定を反映させるために、
サーバーを再起動してから行ってください。
にWebブラウザからアクセス
ログイン認証がでるので、
先程設定した
usernameは、「hoge」
passwordも、「hoge」
を入力しましょう。
が表示されたら、OKです。
◆おまけ(ローカルホスト外から、「Webアプリケーションマネージャ」へのアクセス)
ここまでの設定だけではTomcatがインストールされたローカルホストからの
アクセスに限定されています。
そのため、ローカルホスト外のリモートから Webアプリケーションマネージャ
へアクセスするには、以下の設定も必要です。
次の①②の2箇所のMETA-INFフォルダの
context.xmlという、ファイルを編集します。
①(Tomcatを配置してるディレクトリ)/webapps/manager/META-INF
②(Tomcatを配置してるディレクトリ)/webapps/host-manager/META-INF
※(Tomcatを配置してるディレクトリ)は置き換えてください。
2つのファイル両方に下記のコード(アクセスをローカルホストに限定する)があります
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
方法としては、
リモートアクセスを許可したいIPアドレスを指定してあげるか、
コメントアウトしてすべてのホストからのアクセスを許可します。
今回は、コメントアウトした場合の例を載せます。
編集する内容としては、①と②のファイル、どちらも同じです。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!-- コメントアウト
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
ここまで -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
※設定を反映させるには、サーバーを再起動して下さい。
アクセスする場合は、
「http://<サーバーを起動しているプライベートIPアドレス>:8080」
同一のネットワーク(ex.同じwifi端末に接続してる状況)に
接続してある端末のブラウザに入力して下さい。
試しに、同じwifiに接続しているPCとスマホ端末を用意し、
PC上でTomcatを起動し、スマホ端末からアクセスしてみました
「Hello World!」と出ていれば成功です。
IPについては、グローバルIPではなく、プライベートIPになります。
グローバルIPでの
接続に関しては、また方法がわかれば
また別途書こうと思います。
◆最後に
私の場合、xmlフォルダで追加コードを書く際に、
追加する位置がわかりにくくて、違う場所に追加してしまって
404エラーが出る。動かない、、という状態に陥ってしまったりしました。
なので、今回の記事を書くにあたっては、
xmlファイルのどの位置に、どのコードを、どう追加すれば良いか。
また、なぜ追加する必要があるのか、
わかりやすく書くように心がけました。
また、Webアプリケーションマネージャ以外にも、
Tomcatには、仮想ホストマネージャもあります。
そちらの起動方法については、別の記事をご覧ください。
[Tomcat]「仮想ホストマネジャ」を起動
本記事が、お役に立てたなら幸いです。
よければいいね!お願いします。
それでは!
Discussion