Java
2022.03.09
Tomcatとは何者?インストールからApacheとの連携まで解説!
2022.03.09

JavaでWebアプリを開発する際に、必ずといっていいほど目にするのが「Tomcat」という単語。

Tomcatとは何なのか?なぜ必要なのか?といった疑問にお答えします。


1.Tomcatとは?

Tomcatは、Javaで作成したWebアプリケーションを実行するために利用するソフトウェア。


無償で利用できる「サーブレットコンテナ」で、多くの現場やWeb開発で利用されている、言わば「デファクトスタンダード」といえる存在です。

2.Tomcatについて学ぶ前の前提知識


まずは、Tomcatを学ぶうえで大事な基礎知識から解説していきます。

①Webサーバーとは

Webサーバーは、一般的にWebアプリケーションが動作するソフトウェアを指します。
たとえば、Webブラウザを利用して閲覧しているこのサイトも、Webサーバー上で動作しています。


Webサーバーの主な役割は、「ブラウザからのアクセスを受け取り、適切なコンテンツを返却する」というものです。

さまざまなWebサーバー

Webサーバーとして有名なのが「Apache」と「Nginx」、そして「IIS」です。

Apache

Apacheは歴史のあるWebサーバーです。


設定が容易であり、簡単に導入できることから、多くのWebシステムで動作しています。

Nginx

NginxはApacheよりあとに登場したWebサーバーで、高速・大量処理を目的に開発されました。


Apacheと比較して高速に動作し、一度に多くのリクエストを処理することが可能です。そのため、多くのユーザーが利用するようなシステムでの採用が増えています。


もともと、Apacheが絶大なシェアを誇っていましたが、2021年にはNginxがApacheのシェアを追い越しました。

IIS

IISはMicrosoftが提供するWebサーバーです。Windows上で動作し、Webサーバーとしての基本機能のほか、「.NET Framework」で開発したWebアプリを動作させるために必要な機能を備えています。


IISはWindows Serverに標準搭載されており、開発用に機能が制限されたIISがWindows10などで利用できます。


GUIで設定を完結できることから、非開発者にとっては非常に扱いやすいWebサーバーです。ただし、Windows上でしか動作せずLinux版は提供されていませんので注意しましょう。

②Webコンテナ(サーブレットコンテナ)とは

TomcatはWebサーバーとしての役割も持っていますが、特に「Webコンテナ」または「サーブレットコンテナ」と呼ばれています。


詳しい解説は省略しますが、サーバー上で動作するJavaの仕様の多くは「Jakarta EE」として仕様が定義されており、「サーブレットコンテナ」の仕様もこのJakarta EEの仕様のひとつとして定義されています。


Jakarta EEを実装したソフトウェアとしては、「Glassfish」や「JBoss」などがあり、多くの製品が有償で提供されています。


Tomcatは、「Jakarta EE」の仕様の中でもサーブレットコンテナとしての機能に特化しているかわりに、無償で利用できるのです。

サーブレットとは

サーブレットは、JavaでWebアプリケーションを構築する際に作成するクラスを指します。


HttpServletを継承したクラスを作成し、Webブラウザからのアクセスに応じた処理を実装していきます。


サーブレットには、ブラウザからアクセスするようなURLと、「GET」や「POST」といったリクエストメソッドに応じた処理を記述するのです。

サーブレットコンテナの役割

サーブレットコンテナは、サーバー上でサーブレットを実行する役割を果たします。


内部的にJavaを動作させ、アクセスしたリクエストに応じてサーブレットを実行し、実行結果を返却します。

③Webサーバーとサーブレットコンテナの違い

Webサーバーとサーブレットコンテナは、「サーバー上で動作するソフトウェア」という点では同じですが、役割が少し異なります。


Webサーバーはブラウザからのアクセスに対して、どのような処理をするのかを判断する機能を持ちます。サーブレットコンテナは「サーブレットを実行する処理に特化している」と考えましょう。


実はTomcatは、簡易的ではありますがWebサーバーとしての機能を有しています。この機能を利用することで、Tomcatのみでブラウザからアクセスが可能になっているのです。



3.Tomcatのインストール方法

それでは、Tomcatをインストールする方法を紹介します。
今回は、Tomcatの最新版であるTomcat10をWindowsのパソコンへインストールしてみましょう。


(画面はWindows11ですが、Windows10でも同じ手順でインストールできます。)

①前提条件

すでに、Java17がインストールされているものとします。


Java17以前でもTomcatは利用可能ですが、対応するJavaのバージョンは11以降であるため注意しましょう。

②Tomcatのダウンロード

下記のURLから、Tomcatのダウンロードページへアクセスしましょう。

https://tomcat.apache.org/download-10.cgi

Tomcatのダウンロードページへアクセス

下にスクロールすると、「Windows Service Installer」と表記されているリンクがあるので、クリックしてインストーラーをダウンロードします。

Windows Service Installerを選択

もしダウンロードに失敗した場合やあまりにもダウンロードが遅い場合には、「Other mirrors:」の項目から違うサイトを選択するとよいでしょう。

③Tomcatのインストール

ダウンロードしたexeファイルを実行してインストールを始めましょう。


実行すると、以下の画面が表示されるので「Next」をクリックします。

インストーラーを実行し「Next」をクリック

ライセンスの確認

ライセンスについての記載がされていますので、内容を確認の上「I Agree」を選択します。

ライセンスの確認をし、「I Agree」を選択

インストールモジュールの選択

次に、インストールするモジュールを選択します。

「Example」を選択したうえで「Next」をクリックしましょう。

「Examples」を選択する

Exampleには、Tomcatが正常に動作するためのサンプルアプリが含まれています。

選択しなくてもTomcatの動作自体には影響しませんので、本番環境やテスト環境といったサーバーへのインストール時には選択しないようにしましょう。

ポートとユーザーの確認

Tomcatにアクセスするための「ポート」や、ユーザーの設定を入力します。


「Tomcat Administrator Login」の項目には、自身でパスワードを設定しましょう。

「Tomcat Administrator Login」の項目でパスワードを設定

ここで「Tomcat Administrator Login」の項目を設定すると、Web上からTomcatを扱えます。そのためパスワードが漏洩するとサーバーが乗っ取られる可能性が高くなり、セキュリティのリスクが激増します。


あくまでも自身のPC内でTomcatを扱うための方法であるため、本番環境ではこの項目を入力しないようにしましょう。

Javaのパス指定

Javaがインストールされたパスを指定します。
正常にJavaがインストールされていれば、以下のように自動で入力されています。


インストールしたJDKの種類によってパスが若干異なるため注意しましょう。


Javaのインストールパスを確認の上、「Next」をクリックします。

Javaのインストールパスを確認し「Next」をクリック

インストール先の指定

Tomcatをどこにインストールするかを選択します。

今回は、そのままで「Install」をクリックします。

Tomcatのインストール場所を選択し、「Install」をクリック

インストールが始まったら、終わるまで待ちましょう。

インストールが終わるまで待つ

インストール終了

完了画面が表示されるので、「Run Apache Tomcat」が選択されていることを確認し、「Finish」をクリックします。
(画面上では選択されていますが、「Show Readme」は外しても構いません。)

「Run Apache Tomcat」を選択し「Finish」をクリック

これでTomcatのインストールは完了です。

4.Tomcatの基本的な操作方法


それでは、実際にTomcatを使ってみましょう。


Tomcatのインストールに成功していれば、以下のようにタスクバーにTomcatのアイコンが表示されています。

タスクバーに表示されるTomcatアイコン

このアイコンを右クリックすることで、Tomcatの操作画面が表示されます。

アイコンを右クリックで操作画面が表示される

①Tomcatの起動

インストール直後であれば、Tomcatは自動で起動しています。

「Service Status」に「Started」文字が表示されていることを確認しましょう。

「Service Status」が「Started」であれば起動している

もし、以下のように「Stopped」だった場合には、「Start」のボタンをクリックすることでTomcatが起動されます。

「Stopped」だった場合には「Start」をクリックして起動

Tomcatを起動したことを確認するためには、PCのブラウザから http://localhost:8080 にアクセスします。


以下のように、Tomcatの情報が表示されていれば無事起動しています。

起動できていればTomcatの情報が表示される

②Tomcatの停止

Tomcatを停止する場合、Stopボタンをクリックします。

Tomcatを停止するときは「Stop」をクリック

③Tomcatの再起動

通常、「Restart」ボタンをクリックすることで再起動が可能です。しかし今回紹介した方法でインストールしたTomcatでは、OSの仕様によりこのボタンを選択できません。


そのため、「Stop」をクリックして停止を確認した後、「Start」をクリックして起動してください。



5.ApacheとTomcatを連携してみよう


TomcatもWebサーバーとしての役割は持っているものの、一般公開するような場合には機能が不足しています。
そのため、WebサーバーとTomcatを連携して併用するのが一般的です。


前述の通りさまざまなWebサーバーが存在しますが、Tomcatであればいずれのソフトウェアとも組み合わせて利用可能です。


今回は、その中でもApacheと連携する方法を紹介します。

①前提条件

先ほどと同様に、Windowsでの設定手順を紹介します。
なお、Apacheはすでにインストールが完了しているものとします。

②Apacheの設定

httpd.confの設定

インストールしたApacheの「conf」フォルダにある、「httpd.conf」を編集します。

まずはモジュールの設定を有効化するため、以下の2行を変更します。

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

最終行に以下のコードを追加します。

ProxyPass /tomcat ajp://localhost:8009/

③Tomcatの設定

Tomcatを停止したうえで、Tomcatのインストールフォルダの「conf」にある「server.xml」を編集します。


以下のようにAJPの設定が記述されていますので、この設定を有効化してください。


server.confはXML形式で記述されていますので、<!–と–>で囲まれたコメントアウトの記述を削除します。

また、解除したXMLの属性に、「secretRequired=“false”」を忘れずに追加してください。


変更前

<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
           address="::1"
           port="8009"
           redirectPort="8443" />
-->



変更後

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
           address="::1"
           port="8009"
           secretRequired="false"
           redirectPort="8443" />

④動作確認

設定が完了したら、ApacheとTomcatを再起動しましょう。


起動を確認したうえで、 http://localhost/tomcat へアクセスします。
(Tomcatのアクセスと異なり、ポートを記述していないことに注意しましょう。)


以下のように表示されていれば、ApacheとTomcatの連携は完了です。

ApacheとTomcatが連携できていれば情報が表示される





6.プログラミングを学ぶならトレノキャンプへ


トレノキャンプでは、Javaを実践的に学ぶためのコースをオンラインで提供しています。オンデマンド配信なので、いつでも好きなときに受講が可能です。講座の詳しい内容は下記のバナーをクリックしてご覧ください。

この記事をシェア
おすすめの受講コース
  • Javaエンジニア完全パック -実務に必要なスキルを網羅-
  • はじめてのデータベース ~仕組みの理解とSQL~
  • Javaプログラミング本格入門シリーズ①~データ構造とアルゴリズム~
  • Javaで学習するユニットテスト入門 ~JUnitで理解するテスト手法~