🖥

【Apache/Tomcat】初めてのWeb/APサーバ構築

に公開2

はじめに

今からWebサーバ/APサーバを勉強したいと思われている方向けに、比較的簡単な方法でAWS上に環境構築を行う方法をご紹介します。
無料利用枠内での利用となっていますので、とりあえず試してみたいという方におすすめです。
この記事で紹介する方法が全てではありませんが、少なくともWeb/APサーバがどのようなものかイメージを持っていただけるかと思います。
どなたかのお役に立てれば幸いです。

前提

AWSアカウントを所持している

本記事ではAWSアカウントを作成済みであることを前提に解説を進めます。未作成の方は以下リンクを参照しアカウントを作成された後、次章に進んでください。

https://aws.amazon.com/jp/register-flow/

基本的なLinuxコマンドが使用できる

EC2インスタンスを作成後はサーバ上でのCLI操作となりますが、文字量が膨大になってしまうため実行コマンドの詳細説明は省略させていただきます。
予め基礎的なコマンドを把握の上でお読みいただければ理解が早まると思います。

構成

項目名 設定値 選定理由
EC2インスタンスタイプ t2.micro 無料利用枠で使用可能
OS Amazon Linux 2023 無料利用枠で使用可能
Webサーバ Apache HTTP Server 2.4.62 現状で最新の安定バージョン
APサーバ Apache Tomcat 10.1.34 同上
Java Amazon Corretto Devel 21 同上(※本稿の構成のみであればdevelでなくとも可)

① VPC環境作成

AWSコンソール画面からVPCと付随する環境を作成します。
サーバを構築するための土台作りと捉えていただいて問題ありません。


VPC画面TOP >「お使いのVPC」画面右上の「VPCを作成」を押下。

「VPCなど」を選択。

以下のような画面に切り替わります。

画像の通り各項目を設定していきます。(実画面では縦並び)

項目名 設定値
名前タグ WebAP-test(なんでも可)
IPv4 CIDRブロック 192.168.0.0/26(少し余裕を持たすこと推奨)
AZの数 1
パブリックサブネットの数 1
プライベートサブネットの数 0
VPCエンドポイント なし

※上記以外は全てデフォルト設定のまま

設定完了後、「VPCを作成」を押下。
以下画面に自動遷移します。

「お使いのVPC」画面に戻ると、作成したVPCが表示されることを確認できます。

② EC2接続環境設定

なるべく安全にEC2インスタンスに接続し作業が行えるように、「AWS SSM Default Host Management Configuration」というサービスの設定を行います。
長い名前から難しそうな印象を受けますが、実際の操作は一瞬で完了します。

この設定を有効にすることで、EC2のセキュリティグループ(インバウンドルール)に穴を開けずに、コンソール画面から接続・操作を行うことが可能になります。
サービスの詳細につきましては主旨がブレるため省略させていただきます。

EC2インスタンス作成後に本章の操作を実施しても問題ありませんが、その場合はEC2の再起動が必要になりますのでご留意ください。


「AWS Systems Manager」のサイドメニューから「フリートマネージャー」画面を開きます。

画面右上の「アカウント管理」から「デフォルトのホスト管理設定を設定する」を押下。

遷移後の画面で「デフォルトのホスト管理設定を有効にする」を選択し、
IAMロールに「AWSSystemsManagerDefaultEC2InstanceManagementRole」を設定します。 (デフォルトで用意されているロール)

画面右下の「設定」を押下し、設定完了です。

③ EC2インスタンス作成

WebAPサーバとなるEC2インスタンスを作成していきます。
無料利用枠内での構築となるためスペックはかなり抑えめです。


「EC2」画面のサイドメニューから「インスタンス」を選択。
画面右上の「インスタンスを起動」を押下。

「インスタンスを起動」画面にて、以下の通り各項目を選択・入力してください。

項目名 設定値
名前とタグ WebAP-test-EC2(なんでも可)
AMI Amazon Linux 2023 AMI
インスタンスタイプ t2.micro
キーペア キーペアなしで続行
VPC 先に作成したVPC(WebAP-test-vpc)
サブネット 先に作成したサブネット(1つのみのため自動設定される)
パブリックIPの自動割り当て 有効化
セキュリティグループ セキュリティグループを作成
セキュリティグループ名 WebAP-test-SG(何でも可)
インバウンドルール なし(デフォルト設定を削除)
ストレージを設定 8Gib GP3

※上記以外は全てデフォルト設定のまま


設定完了後、「インスタンスを起動」を押下。
再度「インスタンス」画面に戻り、作成したEC2インスタンスが存在していることを確認しましょう。

ステータスチェック欄が「2/2のチェックに合格しました」に変化するまで待機します。

ステータスの変化を確認後「AWS Systems Manager」画面を開き、サイドメニューから「フリートマネージャー」画面に移動すると、作成したEC2インスタンスが表示されます。

以上でWebAPサーバ構築のための下準備は完了です!

④ 必要パッケージインストール

本章からEC2インスタンスに接続し、中身の構築を行います。
まずは必要なパッケージをインストールしていきましょう。


EC2インスタンス接続

「EC2」画面から「WebAP-test-EC2」を選択し、「接続」を押下。

遷移後の画面で「セッションマネージャー」タブを選択し、「接続」を押下。
※EC2起動直後の場合は「接続」が押下できません。その場合は1~2分待機後再実施してください。

以下のようなCLI画面が表示されたら接続成功です。

Apacheインストール

Apacheをインストールします
まずシステムにプリインストール済みのパッケージに更新がないか確認しておきましょう。

sudo dnf update
コマンド実行結果
sh-5.2$ sudo dnf update
Last metadata expiration check: 4:03:20 ago on Sat Feb  1 11:46:38 2025.
Dependencies resolved.
Nothing to do.
Complete!

次にAmazonLinux2023のリポジトリで利用可能なApacheの最新バージョンを確認します。
併せてApacheの公式サイトで最新の安定バージョンを確認した上で、今回は「2.4.62-1」を選択します。

https://httpd.apache.org/download.cgi

dnf list available httpd --showduplicates
コマンド実行結果
sh-5.2$ dnf list available httpd --showduplicates
Amazon Linux 2023 repository                              33 MB/s |  31 MB     00:00
Amazon Linux 2023 Kernel Livepatch repository             80 kB/s |  11 kB     00:00
Available Packages
httpd.x86_64      2.4.54-3.amzn2023.0.4       amazonlinux
httpd.x86_64      2.4.55-1.amzn2023           amazonlinux
httpd.x86_64      2.4.56-1.amzn2023           amazonlinux
httpd.x86_64      2.4.58-1.amzn2023           amazonlinux
httpd.x86_64      2.4.59-2.amzn2023           amazonlinux
httpd.x86_64      2.4.61-1.amzn2023           amazonlinux
httpd.x86_64      2.4.62-1.amzn2023           amazonlinux

「httpd-2.4.62-1.amzn2023」をインストールします。
下記コマンド実行後色々と表示されますが、最終行に「Complete!」があればOKです。

sudo dnf -y install httpd-2.4.62-1.amzn2023

指定したバージョンのApacheがインストールされたことを確認します。

httpd -version
コマンド実行結果
sh-5.2$ httpd -version
Server version: Apache/2.4.62 (Amazon Linux)
Server built:   Jul 23 2024 00:00:00

以上でApacheのインストールは完了です。

Javaインストール

次にJavaをインストールします。
TomcatはJava上で動作するミドルウェアのため、この作業は必須です。
予めインストールするTomcatのバージョンに対応するJavaバージョンを確認しておきましょう。
今回はTomcat「10.1.34」をインストール予定のため、Javaバージョンは「11以上」であれば問題ありません。
「11以上」かつ最新安定版という理由から、今回は「Amazon Corretto Devel 21」を選択しました。

https://tomcat.apache.org/whichversion.html

https://aws.amazon.com/jp/corretto/faqs/


「Amazon Corretto Devel 21」をインストールします。
コマンド実行後色々と表示されますが、最終行に「Complete!」があればOKです。

sudo dnf -y install java-21-amazon-corretto-devel

指定したバージョンのJavaがインストールされたことを確認します。

java --version
コマンド実行結果
sh-5.2$ java --version
openjdk 21.0.5 2024-10-15 LTS
OpenJDK Runtime Environment Corretto-21.0.5.11.1 (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.5.11.1 (build 21.0.5+11-LTS, mixed mode, sharing)

以上でJavaのインストールは完了です。

Tomcatインストール

続けてTomcatのインストールを行います。
Apacheと同様に、まずはリポジトリ内のTomcatのリストを確認しましょう。

dnf list available tomcat*
コマンド実行結果
sh-5.2$ dnf list available tomcat*
Last metadata expiration check: 22:31:52 ago on Sat Feb  1 16:03:39 2025.
Available Packages
tomcat-native.x86_64                2.0.8-4.amzn2023.0.1              amazonlinux
tomcat-taglibs-parent.noarch        3-18.amzn2023.0.1                 amazonlinux
tomcat10.noarch                     1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-admin-webapps.noarch       1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-docs-webapp.noarch         1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-el-5.0-api.noarch          1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-jsp-3.1-api.noarch         1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-lib.noarch                 1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-servlet-6.0-api.noarch     1:10.1.34-1.amzn2023.0.1          amazonlinux
tomcat10-webapps.noarch             1:10.1.34-1.amzn2023.0.1          amazonlinux

たくさん表示されましたね。
Tomcatの公式ページを確認すると最新安定バージョンは「10.1.34」のため、AmazonLinuxリポジトリ内のTomcatをインストールして問題ありません。
https://tomcat.apache.org/whichversion.html

AmazonLinuxリポジトリ内のTomcatパッケージは、公式パッケージの内容を機能ごとに分割して配布しているような形式となっています。
そのため「dnf list」時に同じバージョンのTomcatがたくさん表示されたんですね。
今回は最低限の機能+サンプルページの表示さえできれば問題ないため、「tomcat10-webapps.noarch」をインストールします。

sudo dnf install -y tomcat10-webapps.noarch

コマンド実行後色々と表示されますが、最終行に「Complete!」があればOKです。

指定したバージョンのTomcatがインストールされたことを確認します。

dnf list installed | grep tomcat10
コマンド実行結果
sh-5.2$ dnf list installed | grep tomcat10
tomcat10.noarch                         1:10.1.34-1.amzn2023.0.1           @amazonlinux
tomcat10-el-5.0-api.noarch              1:10.1.34-1.amzn2023.0.1           @amazonlinux
tomcat10-jsp-3.1-api.noarch             1:10.1.34-1.amzn2023.0.1           @amazonlinux
tomcat10-lib.noarch                     1:10.1.34-1.amzn2023.0.1           @amazonlinux
tomcat10-servlet-6.0-api.noarch         1:10.1.34-1.amzn2023.0.1           @amazonlinux
tomcat10-webapps.noarch                 1:10.1.34-1.amzn2023.0.1           @amazonlinux

「tomcat10-webapps.noarch」が存在することを確認できればOKです。

以上でTomcatのインストールは完了です。

⑤ 起動確認

WebAPサーバとして必要なサービスのインストールが完了しました。
続けてサービスが起動できること、接続できることを確認していきましょう。


サービス起動

ApacheとTomcatのサービスを起動します。

Apacheサービス起動/起動確認

Apacheサービス起動
sudo systemctl start httpd
Apacheサービス起動確認
sh-5.2$ systemctl status httpd
● httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
     Active: active (running) since Mon 2025-02-03 13:24:40 UTC; 2min 26s ago
       Docs: man:httpd.service(8)
   Main PID: 129233 (httpd)
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
      Tasks: 177 (limit: 1111)
     Memory: 17.2M
        CPU: 139ms
     CGroup: /system.slice/httpd.service
             ├─129233 /usr/sbin/httpd -DFOREGROUND
             ├─129234 /usr/sbin/httpd -DFOREGROUND
             ├─129235 /usr/sbin/httpd -DFOREGROUND
             ├─129236 /usr/sbin/httpd -DFOREGROUND
             └─129237 /usr/sbin/httpd -DFOREGROUND

Tomcatサービス起動/起動確認

Tomcatサービス起動
sudo systemctl start tomcat10
Tomcatサービス起動確認
sh-5.2$ systemctl status tomcat10
● tomcat10.service - Apache Tomcat 10 Web Application Container
     Loaded: loaded (/usr/lib/systemd/system/tomcat10.service; disabled; preset: disabled)
     Active: active (running) since Sun 2025-02-02 15:07:08 UTC; 22h ago
   Main PID: 83040 (java)
      Tasks: 29 (limit: 1111)
     Memory: 97.5M
        CPU: 1min 45.955s
     CGroup: /system.slice/tomcat10.service
             └─83040 /usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory...

Apache/Tomcatともに「systemctl status」の結果が「active (running)」であれば起動確認はOKです。

セキュリティグループの穴あけ

このまま接続確認と行きたいところですが、現状のままではEC2インスタンスにアタッチしたセキュリティグループのインバウンドルールに何も設定していないため、クライアントPCから接続することができません。
セキュリティグループにApache接続用とTomcat接続用のルールを設定していきましょう。

まずはEC2画面のサイドメニューから「セキュリティグループ」画面を開きます。
そのまま「インバウンドルールの編集」を押下します。

インバウンドルールの編集画面に遷移します。

以下の通りルールを追加します。

タイプ プロトコル ポート範囲 ソース 説明 (なんでも可)
HTTP TCP 80 マイIP Apache
カスタムTCP TCP 8080 マイIP Tomcat

「ソース」をマイIPに設定することで、クライアントPCのグローバルIPアドレスを自動で設定してくれます。
ほとんどの場合動的IPアドレスだと思われますので、PC/ルータの再起動などでIPが変化した場合は再設定が必要になることをご留意ください。

設定完了後「ルールを保存」を押下し、インバウンドルールに設定した内容が表示されることを確認しましょう。

以上でセキュリティグループの穴あけは完了です。

Apache/Tomcaの接続確認

いよいよ最後です。
クライアントPCのWebブラウザから、Apache/Tomcatに接続できることを確認しましょう。

Apache接続確認

EC2インスタンスの概要画面から「パブリック IPv4 アドレス」の値を確認し、コピーしてください。
コピーした値をそのままWebブラウザのアドレスバーに貼り付けてエンターします。

以下のように「It works!」の表示が出れば接続確認完了です!
(Apacheのテストページ)

Tomcat接続確認

Tomacatの接続確認も同様の手順ですが、アドレスバーにEC2インスタンスのIPアドレスを貼り付けた後、末尾に「:8080」を追記してください。
「:8080」はTomacatのポート番号(デフォルト設定値)を意味しており、明示的に指定することでTomacatに対し通信を行うことが可能になります。
何も指定しない場合は自動でHTTP(Apache)のポート番号「:80」が設定されますが、アドレスバーには表示されません。

以下のように「Apache Tomcat/10.1.34」の表示が出れば接続確認完了です!
(Tomcatのテストページ)

おわる前に

後片付けは大事です。
目的を達成でき次第、今回作成したAWSサービスを削除しましょう。
他のハンズオンでも同様ですが、検証用に構築したサービスは、完了次第すぐに削除する習慣を付けることをおすすめします。
無料利用枠内での構成とは言え、そのまま放置していれば忘れたころに請求が来ることになります。。。(経験談)

せっかく作ったのにもったいない気持ちも大変わかりますし、削除後に再検証が必要になる場合もあるかもしれません。
しかし個人利用であれば、手間を惜しまずお金を惜しんだ方が結果的に損が少ないかと思いますので、AWSに限らず課金の発生するサービスを利用する際はご一考ください。

おわりに

お疲れさまでした。
以上でWebAPサーバの構築は完了です。
実際に運用する場合はセキュリティ、スペック面など考慮すべき点が多々ありますが、軽く触ってみたいというだけであればご紹介した構成で十分かと思います。
今後も引き続きApache/TomcatやAWSについての記事を書いていきますので、ご参照いただければ幸いです。
ここまでお付き合いいただきありがとうございました。

※記事の内容につきましてご指摘、ご意見等ございましたらご連絡いただけますと幸いです。

Discussion

clazzclazz

awsの設定大変ですよね。頑張って下さい。
私も似たような事、やってます。

GK7AAGK7AA

コメントありがとうございます。
覚えることが多く、日々のアップデートに追いつくのも大変ですが楽しく頑張ります...!