はじめに
Spring Bootで作成したWebアプリケーションを、AWSのEC2を利用してインターネット上に公開する手順をまとめることにします。
なお、今回はパート2ですので、パート1のこちらの記事から読むのが望ましいです。
パート2は
- EC2にSSH接続する
- EC2にJavaをインストールする
- Spring BootアプリをJAR化する
をやります。
もくじ
- AWSアカウントを作る
- EC2を作る
-
EC2にSSH接続する
-
EC2にJavaをインストールする
-
Spring BootアプリをJAR化する
- JARをEC2に送る
- Spring Bootを起動する
- AWSの通信設定をする
- ブラウザからアクセスする
- systemdで自動起動させる
- Webアプリの停止方法を学ぶ
3. EC2にSSH接続する
EC2を作成したら、Windows PCからSSH接続します。
3-1. パブリックIPv4アドレスを確認
EC2の詳細画面から、
パブリック IPv4 アドレス
を確認します。
今回の例では、
13.123.45.67
とします。
3-2. PowerShellを起動してSSHコマンドを実行する
SSH(Secure Shell)は、ネットワーク経由で遠隔のコンピュータやサーバーを安全に操作するための通信プロトコルです。パスワードや入力したコマンドなど、すべての通信内容が暗号化されるため、安全にリモート管理を行えます。
まず、WindowsのPowerShellを起動します。
前回保存した.pem ファイルがDownloadsにある場合は、例えば以下のようなパスになっていると思います。
C:\Users\あなたの名前\Downloads\springboot-key.pem
これをコピーして、powershellに以下のような記述をして実行します。
ssh -i "C:\Users\あなたの名前\Downloads\springboot-key.pem" ubuntu@13.123.45.67
なお、IPアドレスと.pemファイルの場所は、自分の環境に合わせて変更してください。
3-3. 初回接続時の確認
初回接続時に、
Are you sure you want to continue connecting (yes/no/[fingerprint])?
と表示されたら、
yes
と入力します。
以下のような表示が出ればSSH接続成功です。
Welcome to Ubuntu 26.04 LTS
また、
ubuntu@ip-xxx-xx-xx-xx:~$
のようなプロンプトが表示されます。
この状態がEC2のUbuntuターミナルです。
(遠隔でクラウドサーバーを操作できるなんてハッキングしている気分です。)
4. EC2にJavaをインストールする
SSH接続した状態まま、Javaをインストールします。
4-1. パッケージ情報を更新
EC2のターミナルで、
sudo apt update
を実行します。
4-2. Javaをインストール
Spring Bootの開発環境でJava 21を使用している場合は、
sudo apt install openjdk-21-jdk
を実行します。バージョンは自身の作成したWebアプリに合わせてください。
実行途中に
Do you want to continue? [Y/n]
と表示されたら、
Y
を入力します。
4-3. Javaのバージョンを確認
java -version
を実行すると、例えば、
openjdk version "21.x.x"
と表示されればJavaのインストール成功です。
念のため、
javac -version
も確認できます。
5. Spring BootアプリをJAR化する
ここからはEC2ではなく、開発用Windows PC側で作業します。
5-1. Spring Bootプロジェクトを開く
Spring Bootプロジェクト直下のディレクトリに、
pom.xml
src
が存在することを確認します。
もしbuild.gradleやbuild.gradle.ktsなどがある場合はSpring BootのビルドツールがMavenではなくGradleを使っているはずです。
今回はMavenを利用していることを想定して作業をしますが、もしGradleを利用している場合は別記事などを参考に作業をしてみてください。
5-2. プロジェクトディレクトリへ移動
PowerShellでSpring Bootプロジェクト直下のディレクトリへ移動します。
5-3. Mavenでビルド
mvnw clean package
を実行します。成功すると、
target
フォルダが作成され、その中にJARファイルが生成されます。
例えば、
target/
└── MySpringBoot-0.0.1-SNAPSHOT.jar
のようになります。
今回実行したコマンドはmvnw clean packageですが、このmvnwはMavenのプロジェクトにあるMaven Wrapper(Mavenラッパー)が含まれている場合に実行できます。
もしMaven Wrapperがない場合はPCに直接Mavenをインストールしてmvnで実行する必要があります。
5-4. ローカルでJARを起動して確認
AWSへ送る前に、ローカル環境でJARが正常に起動するか確認します。
java -jar target\MySpringBoot-0.0.1-SNAPSHOT.jar
Spring Bootが起動し、
Tomcat started on port 8080
などの表示があればOKです。
慎重に進めたい方はブラウザから、
http://localhost:8080/任意のURL
URLへアクセスして確認するのが良いです。
次回予告
次回は
- EC2にSSH接続する
- EC2にJavaをインストールする
- Spring BootアプリをJAR化する
をします。