はじめに
こんにちは!
株式会社BFT名古屋支店の新人エンジニア ケセランパサランです。
現在Centos7のイメージを使ってDockerコンテナを建て、ApacheとTomcatをインストールしたのですが…
Tomcatのテスト画面が表示されません!
多くのサイトでは、Tomcatをインストールしてちょちょっといじるだけでブラウザ上でlocalhost:8080にアクセス(自端末上にTomcatがある場合)できているのに…
↓ この画面になります(泣)
いろいろとTomcatについて調べて試行錯誤する中で
【テスト画面を表示させるためのディレクトリやファイルが存在しないので、不可能!!】
という結論に至ったので、今回はその経緯と、代わりにTomcatが正常起動していることを証明する簡単な方法についてまとめたいと思います。
※Dockerコンテナで実施していますが、どのような環境でもほぼ同じ手順を踏めると思います。
目次 TomcatでWebアプリケーションを動かすには、決まった構造に従って必要なファイルなどを配置しなければいけません。 【手順1】 【手順2】 【手順3】 sample配下の構造は以下のようになっています。
超~簡単に説明すると、 この状態で試しにブラウザ上でlocalhost:8080/sampleにアクセスすると、このような画面が表示されました!! ようやく本題に入ります。 そう、ないんです。テスト画面。 そりゃ~いくらTomcatが正常起動していても、テスト画面を表示するための情報がなかったらテスト画面は見れないわけです。 じゃあ、どうしたらTomcatが正常起動していることを証明できるのでしょうか? 今回はTomcat 7.0.76と、少しバージョンが古いです。 今回はCentOS7のコンテナ上にTomcatをインストールしましたが、 CATALINA_HOME/webapps.dist/examplesはhtmlファイルやWEB-INFディレクトリで構成されており… 今回はTomcatでWebアプリケーションを動かすための構造と、Tomcatのテスト画面が表示されない理由、そしてTomcatが正常起動していることを証明する代替案について書かせていただきました。 以上、ここまで読んでいただきありがとうございました!
【前提】環境
TomcatでWebアプリケーションを動かすために
今回公式サイトが提供しているサンプルwarファイルを使用してみたので、それを例にWebアプリケーションの構造を見ていきます。
※warファイルとは、Webアプリケーションを動かすのに必要な要素をまとめた圧縮ファイルです。そのため、このファイルを展開するだけでWebアプリケーションが自動で構築され使用できるようになります。便利!
サンプルwarファイルの展開手順
公式サイト(https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/)から、サンプル画面のwarファイルをダウンロードします。
ダウンロードしたwarファイルを、公式サイトの説明に従ってCATALINA_HOME/webappsに配置します。
このCATALINA_HOMEというのはTomcatをインストールした場所のことで、Tomcatの設定ファイル (/etc/tomcat/tomcat.conf) から確認できます。
※私の場合は、設定ファイルにはCATALINA_HOME="/usr/share/tomcat/"と記載されていましたが、
/usr/share/tomcat/webapps -> /var/lib/tomcat/webappsと設定されていたので、
/usr/share/tomcat/webappsにコピーしたwarファイルは、自動的に/var/lib/tomcat/webappsに配置されました。
CATALINA_HOME/webapps(私の場合は/var/lib/tomcat/webapps)を覗くと、sample.warとsampleという2つのディレクトリができていることがわかります。
sample.warが自動で展開され、sampleというディレクトリができたのです!(自動で展開するかはTomcatの設定によります。)サンプル画面の構造
* 動的ページを生成するためのjspファイル
* 画像ファイル(.gif)
* Webページを作成するときの鉄板htmlファイル
* Javaアプリケーションを実行するための情報がまとめられたjarファイルの製造情報が書かれたMANIFEST.MFファイル
* Javaのクラスファイル(.class)
* Webアプリケーションを動かすためのライブラリを管理するlibディレクトリ
* アプリケーションを構成するサーブレット(サーバ上で動くJavaで書かれたプログラム)などが設定されたxmlファイル
などが含まれています。
Webアプリケーションを動かすにはいろいろと必要というわけです!
※多少の構造や、含まれるファイルの数や種類などはアプリケーションによって異なります。
テスト画面がない!?
Tomcatでテスト画面を表示するためには、そのためのファイルたちが上記のような構造になって配置されているはずです。
しかし、見当たりません。
Tomcatに関連しそうなディレクトリは/etc/tomcatや/usr/share/tomcatなどがあるのですが、どこにもsampleのような構造になっている箇所がないんです。
試しに[find / -name WEB-INF]で重要なファイルたちが入っているWEB-INFのディレクトリ名を検索しても、先ほど配置したsampleディレクトリ内のものしか見つかりません。
※テスト画面の情報が入っていない原因は不明です(泣)バージョンのせいかなぁ…
Tomcatが正常起動していることの証明
テスト画面がないならサンプル画面を表示すればいいということで、先ほど紹介した手順でサンプル画面が表示できれば大丈夫だと考えました!
試しに[cp -r /var/lib/tomcat/webapps/sample /var/lib/tomcat/webapps/sample2]をしてsampleディレクトリをsample2ディレクトリとして同じ場所にコピーしても、ブラウザからlocalhost:8080/sample2にアクセスするとサンプル画面とまったく同じ画面を表示さることができました!
Tomcatで/var/lib/tomcat/webapps配下に置かれたアプリケーションを公開するよう設定されているから、Webアプリケーションを配置するだけでOKなんですね!
【余談】他のバージョンではどうなのか?
それでは、別のバージョンではテスト画面あたりはどのようになっているのでしょうか?
別の機会にTomcat 10.1.11のイメージを使ってDockerコンテナを建ててみました!
その場合では、
CATALINA_HOME/webapps
CATALINA_HOME/webapps.dist
が存在し、webappsの方は空で、webapps.distの方にexamplesやhost-managerといったディレクトリが含まれていました!
※distはdistributionの略で、配布や公開といった意味があります。
※実際には多くのファイルやディレクトリが含まれていましたが、この図では省略しています。
「これはWebアプリケーションだ~!!」ってなったので、
早速webappsディレクトリの方にコピーしました。
そして、ブラウザ上でlocalhost:8080/examplesにアクセスすると、サンプル画面を表示させることができました!!
おわりに
ネットで検索しても、難しい設定値をいじってTomcatのテスト画面を表示させているものばかりだったので、そもそもテスト画面の素がないなんてこともあり得るんだな~と驚きです。
【参考サイト】