AWS の EC2 の Amazon Linux 2023 に Java インストールして SpringBoot の jarファイルを置いて 起動して外部から接続した時の備忘録メモ
実施したのは 2024/04/04 時点です
-
ざっくり流れ
- EC2インスタンス起動
- EC2ログイン
- Javaインストール
- ローカルから SpringBoot で作った jar を転送
- SpringBoot 起動
-
環境情報
- EC2 (Amazon Linux 2023)
- SpringBoot v3.2.3
- Java v21
- Windows11
- Tera Term v5.2
EC2インスタンス起動
AMI は Amazon Linux 2023にして ssh で接続するのでキーペアとかちゃんと設定する
SpringBoot で使うポート(デフォルトは 8080 )を外部から接続できるようにセキュリティグループを追加
そのほかは自由でOK
EC2 ログイン
windows pc でTeraTerm だとファイルのドラック&ドロップで転送できるので TeraTerm を使う
最近リリースあった v5 だと ssh も問題なく使えるみたいです
ホストに EC2 の パブリックIP、ユーザ名 ec2-user
、認証方式を RSA 鍵使うにして秘密鍵に pem ファイルを指定
root でログイン
sudo -i
Java インストール
-
インストール(v21)
sudo yum install java-21-amazon-corretto
-
インストール確認(バージョン出力)
java -version
-
補足:複数バージョンで切替えたいとき
Javaの他のバージョンの SpringBoot 使いたいときのため念のため...
他のバージョンの Java をインストールして以下のコマンド実行して選択する感じsudo alternatives --config java
他のバージョンのインストールは数字変えるだけ
sudo yum install java-17-amazon-corretto sudo yum install java-11-amazon-corretto sudo yum install java-1.8.0-amazon-corretto
jar を EC2 に転送
TeraTerm だと SpringBoot の jar を選択してドラッグ&ドロップするだけでOK
送信先にパス指定できるけどデフォルトだと ec2-user の home ディレクトリ /home/ec2-user/
にアップロードされる
SpringBoot の jar は環境によるけど maven のプロジェクトだとデフォルトではプロジェクトフォルダの直下にある target の中に作られます
なければMavenビルド実行でゴールを clean package
にして実行
DB設定とか違う状態でビルドしたいときは clean package -Dmaven.test.skip=true
にする
jar を置いたディレクトリに移動
cd /home/ec2-user
SpringBoot 起動
SpringBoot の jar の名前は上で転送した jar に合わせてください
起動したらブラウザから接続 http://パブリックipアドレス:ポート/urlpath
して確認してみよう
パブリックIP, ポート(デフォルト8080), urlpath は自分のやつに合わせる
java -jar spring-boot.jar
アクセス確認
外からつながるようにしてたらアクセスできるはず...
http://パブリックIP:ポート番号/URLパス
環境変数の対応
AWS上で起動するときは開発環境とは違う設定を使いたいときが多いので環境変数の対応を簡易に...
jar が置いてあるディレクトリに application.properties 作って対応する感じです
- jar 置いた場所に移動
デフォルトだと/home/ec2-user/
になる、アップロード時に指定した時はそこに移動cd /home/ec2-user
- application.properties の空ファイル作成
touch application.properties
- application.properties を編集
内容は一旦、ローカルのやつを元にした方が楽そう、変えたいところだけ変更するvi application.properties
- SpringBoot 起動
起動方法は変更なし、カレントディレクトリの application.properies 使ってくれるjava -jar spring-boot.jar