😼

[Tomcat]「仮想ホストマネジャ」を起動

2022/05/25に公開

◆仮想ホストマネジャとは?

Tomcat 4.1.xから導入されたGUI管理ツールです。
仮想ホストマネジャ(Virtual Host Manager)は、
略してVHMと書かれたりします。

主な機能としては、この画面からserver.xmlを触らずに、
仮想ホストを追加することができます。

ただ、server.xmlには記述されないため、
サーバーを停止したら追加した仮想ホストも消えます。

◆本記事のゴール

Webアプリケーションマネジャの起動についての、
説明も以下にあります。

[Tomcat]「Webアプリケーションマネージャ」を起動

よければ、こちらの記事もご覧ください。
設定内容は大体同じですが、こちらも合わせて読むと、
より理解しやすいかと思います。

手順

①マネージャ画面へアクセス用のURLの設定

作成方法ですが、
server.xmlを開き、

<Engine>
 <Host >
    
 </Host>   
</Engine>

Hostタグの中に、
下記、のコードを追加します。

       <Context docBase=“(Tomcatを配置してるディレクトリ)/webapps/host-manager" path="/host-manager" privileged="true" reloadable="true"/>

(Tomcatを配置してるディレクトリ)は、
Tomcatフォルダ内にあるwebappsまでのフルパスです。置き換えてください。

tomcatのフォルダの中のwebappsフォルダの中にあるmanagerフォルダの中に、
Webアプリマネージャを開くために必要なjspファイルなどがあります。

または、
以下の書き方でも良いです。

  <Context docBase="${catalina.home}/webapps/host-manager" path="/host-manager" privileged="true" reloadable="true"/>

server.xmlに該当コードの追加後は、下記のようになります。
※もともと書き込まれていた余計なコメントは削除しています。

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 &quot;%r&quot; %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/host-manager" path="/host-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権限
・仮想ホストマネージャ⇨admin権限

tomcat-users.xmlファイルに、コードを追加すると下記のようになります。
※もともと書き込まれていた余計なコメントは削除しています。

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ブラウザからアクセス。

設定を反映させるために、
サーバーを再起動してから行ってください。

http://localhost:8080/host-manager/html
にWebブラウザからアクセス

ログイン認証がでるので、
先程設定した
usernameは、「hoge」
passwordも、「hoge」
を入力しましょう。

が表示されたら、OKです。

◆おまけ(トップページ(root)の表示)

   <Context docBase="${catalina.home}/webapps/ROOT" path="/root" reloadable="true"/>

で、設定すれば、

http://localhost:8080/root/

にアクセスすると、
Tomcatのトップ画面が開きます。

参考

・2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(1)-仮想ホスト、Apache連携

Discussion