【AWS_22】Apache、Tomcat、Javaをインストールしてみる

Apache、Tomcatともによく聞いて仕事でも触れることはありました。
ただ、Tomcatはぼやっとした理解しかなく、Apache、Tomcatが一緒にインストールされている場合、どのような違いがあるのかちゃんと理解していませんでした。
ですのでこの機会に勉強して備忘のため残しておきたいと思います。
AWSを利用して検証されている記事がありましたのでAWSの復習にもなるなと思い、以下を参照させていただきました。
参考にさせていただいた記事
Apache Tomcat(読:アパッチ・トムキャット)とは
https://wa3.i-3-i.info/word12843.html
図解で解説!! Apache、Tomcatってなんなの?
https://qiita.com/tanayasu1228/items/11e22a18dbfa796745b5
【Apache/Tomcat】初めてのWeb/APサーバ構築
https://zenn.dev/gj77a/articles/3f3b1be845289b
パッケージについての自分メモ
■Apache
Webサーバ用のソフト
正式名称はApache HTTP Server
世界中で最も使用されているWebサーバソフト
■Tomcat
APPサーバ(アプリケーション)
Java Servletを動かす時に使うソフトでWebコンテナのこと(サーブレットコンテナとも言う)
簡易的なWebサーバとしての機能も持つ
正式名称はApache Tomcat
■Java Servlet
Webサーバで動くJavaプログラム
Java Servlet を動かすために サーブレットコンテナであるTomcatが必要となる
全体のイメージ図(※私は理解できてないので記事をまるパクリさせていただきました、すいません・・・)

目次
事前準備
以下の過去記事を参照し、AWS上へVPC、サブネット、インターネットゲートウェイ、ルートテーブル、インスタンス(仮想サーバー)を作成しておきます。
【AWS_04】VPCの作成
https://tkjzblog.com/2022/12/31/【aws_04】vpcの作成/
【AWS_05】サブネット(公開用サブネット)の作成
https://tkjzblog.com/2023/01/01/【aws_05】サブネット(公開用サブネット)の作成/
【AWS_06】インターネット通信できるようインターネットゲートウェイ、ルートテーブルを作成
https://tkjzblog.com/2023/01/03/aws_06インターネット通信できるようインターネ/
【AWS_07】仮想サーバー(インスタンス)の作成
https://tkjzblog.com/2023/01/03/【aws_07】仮想サーバー(インスタンス)の作成/
インスタンス(仮想サーバ)が作成されていることを確認します。

AWS Systems Managerのフリートマネージャーを設定(任意)
これは必須ではありません。EC2インスタンスへSSHで接続する場合は、そちらでも問題ありません。
EC2インスタンスに接続して作業するため「AWS SSM Default Host Management Configuration」というサービスの設定を行います。
TeratermなどでSSH接続もよいですが、この設定を有効にするとEC2のセキュリティグループ(インバウンドルール)にルールを追加せずともコンソール画面から接続・操作を行うことが可能になるそうです。はじめて知りました。
EC2インスタンス作成後に「AWS SSM Default Host Management Configuration」を有効化した場合は、反映のためEC2の再起動が必要となりますのでご注意ください。
EC2インスタンスへ接続できることを確認します。
dnf update
必要なパッケージをインストールしていきます。
その前にシステムにインストール済みのパッケージに更新がないか確認しておきます。
Linuxのお作法がよくわかってないので他の方の記事にあるとおりにしたいと思います。
sudo dnf update
dnf update コマンドは、Linux システムでパッケージをアップデートするためのものです。
このコマンドは、システムにインストールされているパッケージの最新バージョンをダウンロードしてインストールします。
実行結果は、何もする必要がない(Nothing to do .)とのことでした。

Apacheインストール
AmazonLinux2023のリポジトリで利用可能なApacheの最新バージョンを確認します。
sudo dnf list available httpd –showduplicates
「showduplicates」オプションは、対象パッケージの入手可能なバージョンの一覧を表示してくれます

Apacheの公式サイトで最新の安定バージョンを確認しておいたほうがよいそうです。 https://httpd.apache.org/download.cgi
今回は、「httpd-2.4.62-1.amzn2023」をインストールします。
インストールコマンド実行後の最終行に「Complete!」があればインストール成功です。
指定したバージョンのApacheがインストールされたことを確認します。
httpd -version

以上でApacheのインストールは完了です。
Javaインストール
次にJavaをインストールします。 インストールするTomcatのバージョンに対応するJavaバージョンを確認します。 今回はTomcat「10.1.X」をインストール予定のため、Javaバージョンは「11以上」であれば問題ありません。 「11以上」かつ最新安定版ということで、「Amazon Corretto Devel 21」をがよいそうです。 Apache Tomcat Versions https://tomcat.apache.org/whichversion.html

Amazon Corretto のよくある質問
https://aws.amazon.com/jp/corretto/faqs/

Apacheの時と同じように以下を先に実行しておくとJavaの対象パッケージの入手可能なバージョンの一覧を表示してくれます。
私は「devel」や「headless」などどれを優先すべきかまだ理解してないのでこの時点では紹介記事の「devel」でインストールしていきます。
sudo dnf list available java-21* –showduplicates

「Amazon Corretto Devel 21」をインストールします。
インストールコマンド実行後の最終行に「Complete!」があればインストール成功です。
sudo dnf -y install java-21-amazon-corretto-devel.x86_64
指定したバージョンのJavaがインストールされたことを確認します。
java -version

以上でJavaのインストールは完了です。
Tomcatインストール
Tomcatをインストールします。
Apacheと同様に、まずはリポジトリ内のTomcatのリストを確認します。
sudo dnf list available tomcat* –showduplicates
たくさん表示されました・・・

Tomcatの公式ページを確認すると2025年6月12日時点の最新安定バージョンは「10.1.42」のため、AmazonLinuxリポジトリ内のTomcat「10.1.40」をインストールして問題ないと思われます。
紹介記事には「最低限の機能+サンプルページの表示さえできれば問題ないため、「tomcat10-webapps.noarch」をインストールします。」とあるので意味は理解してないですが「webapps.noarch」を選択したいと思います。
インストールコマンド実行後の最終行に「Complete!」があればインストール成功です。
sudo dnf -y install tomcat10-webapps.noarch
指定したバージョンのtomcatがインストールされたことを確認します。ハイフンはいらないみたいです。
tomcat10 version

参考まで以下でもバージョンは確認できるようです。
dnf list installed | grep tomcat

以上でTomcatのインストールは完了です。
ApacheとTomcatのサービスを起動
Apacheのサービスを起動します。
sudo systemctl start httpd

Tomcatのサービスを起動します。
sudo systemctl start tomcat10

Apache/Tomcatともに「systemctl status」の結果が「active (running)」であれば起動されています。
セキュリティグループ追加設定
現状のままではEC2インスタンスにアタッチしたセキュリティグループのインバウンドルールに何も設定していないため、クライアントPCから接続することができません。(ファイアウォールが閉じられているイメージです)
セキュリティグループにApacheとTomcatの接続用ルールの追加が必要となります。
EC2画面のサイドメニューから「セキュリティグループ」画面を開き、該当のセキュリティグループにチェックを入れ画面下の「インバウンドルール」タブを選択後、「インバウンドルールの編集」をクリックします。

インバウンドルールの編集画面に遷移するので「ルールを追加」をクリックします。
以下内容を入力し、「ルールを保存」をクリックします。
※「リソースタイプ」で「マイIP」を選択すると「ソース」は自動で反映されます

セキュリティグループへインバウンドルールが追加されました。

以上でセキュリティグループの設定は完了です。
Apache/Tomcaの接続確認
EC2インスタンスの概要画面から「パブリック IPv4 アドレス」の値を確認します。
私の場合「3.115.116.39」です。(※この確認作業後にEC2インスタンスは削除します)

Apache接続確認
自分の端末のブラウザで「http://3.115.116.39」でアクセスします。
無事表示されました!

Tomcat接続確認
自分の端末のブラウザで「http://3.115.116.39:8080」でアクセスします。
無事表示されました!

後片付け(EC2インスタンスなどを削除)
AWSサービスは、放っておくとどんどん課金されていきます。
ですので不要であれば極力削除したほうがよいそうです。
今回の場合であれば、以下記事を参照いただき削除していきます。基本的には作成した逆の手順で削除していきます。
まとめ
今回は、Apache、Tomcatの関係が気になったので検証してみました。参考にさせていただいた記事にはAWSとそれ以外の環境(Red Hat Enterprise Linuxなど)では、インストール時に作成されるディレクトリに違いがあるため、この記事がすべてだと思わないようにとありました。皆様もご参考まで。
以下、他の記事をまとめた一覧です。AWSもまとめています。