AWS の EC2 の Amazon Linux 2023 に Java インストールして Github から取得した SpringBoot をデプロイして実行した時の備忘録メモ
実施したのは 2024/04/04 時点です
-
ざっくり流れ
- Github プロジェクト作成
- Github トークン取得(privateの時のみ必要)
- EC2インスタンス起動
- EC2ログイン
- Javaインストール
- Mavenインストール
- Git インストール
- Github からプロジェクトをクローン
- プロジェクトビルド
- SpringBoot 起動
- 環境変数の対応
-
環境情報
- EC2 (Amazon Linux 2023)
- SpringBoot v3.2.3
- Java v21
- Windows11
- Tera Term v5.2
- Git v2.40.1
- Maven v3.9.7
Github プロジェクト作成
SpringBoot のスタータを使って maven で作っておく
それを Github に置けばOK、内容はなんでも大丈夫!
リポジトリを private にするとトークンが必要になる
ミニマムなやつの参考はこちら
Github トークン取得(privateの時のみ必要)
EC2 から Github の private なプロジェクトをクローンするときに使う
作った時しかトークン確認できないので注意
-
Personal access tokens - Tokens(classic) - Generate new token - Generate new token(classic) をクリック
※ 2段階認証の設定してる人はクリック後に認証の画面が入ります
-
以下を入力して Genarate token をクリック
-
トークンはここでしか確認できないかも...保存忘れずに!
EC2インスタンス起動
AMI は Amazon Linux 2023にして ssh で接続するのでキーペアとかちゃんと設定する
SpringBoot で使うポート(デフォルトは 8080 )を外部から接続できるようにセキュリティグループを追加
そのほかは自由でOK
EC2 ログイン
windows pc でTeraTerm でアクセス
ホストに EC2 の パブリックIP、ユーザ名 ec2-user
、認証方式を RSA 鍵使うにして秘密鍵に pem ファイルを指定
- root に変更
sudo -i
Java インストール
-
インストール(v21)
sudo yum install java-21-amazon-corretto -y
-
インストール確認(バージョン出力)
java -version
-
補足:複数バージョンで切替えたいとき
Javaの他のバージョンの SpringBoot 使いたいときのため念のため...
他のバージョンの Java をインストールして以下のコマンド実行して選択する感じsudo alternatives --config java
Mavenインストール
-
最新バージョン確認
https://maven.apache.org/download.cgi -
バージョン設定
MAVEN_VERSION=3.9.7
-
ダウンロード
wget https://dlcdn.apache.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz
-
ダウンロードしたアーカイブを解凍
tar -xvzf apache-maven-$MAVEN_VERSION-bin.tar.gz
-
解凍したディレクトリを移動
sudo mv apache-maven-$MAVEN_VERSION /opt/apache-maven
-
シンボリックリンクを作成
sudo ln -s /opt/apache-maven/bin/mvn /usr/bin/mvn
-
環境変数の設定
echo "export M2_HOME=/opt/apache-maven" >> ~/.bashrc echo "export PATH=$M2_HOME/bin:$PATH" >> ~/.bashrc source ~/.bashrc
-
インストール確認(バージョン出力)
mvn --version
↓↓↓ 昔の手順、バージョンが古くてダメかも...
-
リポジトリパッケージバージョン指定(7を指定)
sudo sed -i s/\$releasever/7/g /etc/yum.repos.d/epel-apache-maven.repo
-
インストール
sudo yum install apache-maven -y
-
インストール確認(バージョン出力)
mvn --version
Git インストール
-
インストール
sudo yum install git -y
-
インストール確認(バージョン出力)
git --version
Github からプロジェクトをクローン
クローンしたいディレクトリがある人はコマンドを実行する前に移動しておく
Github のプロジェクトが private の時はトークンが必要になる
-
Github のプロジェクトが public のとき
git clone https://github.com/sueasen/springboot-demo2.git
-
Github のプロジェクトが private のとき
-
Githubから取得したトークンを環境変数に設定
export GITHUB_TOKEN=githubから取得したトークン
-
Githubからクローン
git clone https://$GITHUB_TOKEN@github.com/ユーザー名/リポジトリ名.git
-
プロジェクトビルド
-
プロジェクトディレクトリに移動
cd リポジトリ名
-
ビルド実行
このコマンドだとテスト、スキップ実行(テスト実行するときは clean package だけでOK)mvn clean package -Dmaven.test.skip=true
-
作成した jar 確認
ls -l target/*.jar
SpringBoot 起動
java -jar target/ビルドで作られたjarファイル名
実行時にプロファイルを設定するときの参考
- コマンドライン引数
java -jar target/ビルドで作られたjarファイル名 --spring.profiles.active=プロファイル - システムプロパティ
java -jar -Dspring.profiles.active=プロファイル target/ビルドで作られたjarファイル名
アクセス確認
外からつながるようにしてたらアクセスできるはず...
環境変数の対応
AWS上で起動するときは開発環境とは違う設定を使いたいときが多いので環境変数の対応を簡易に...
Spring のプロファイル機能で application.propeties(.yaml) を切替える感じです
-
AWS上で使う
application-プロファイル.properties(.yaml)
を作成
※ 作り方はなんでもOKなのでここでは簡易な例として記載- プロジェクトのディレクトリに移動
cd リポジトリ名
- application.properties を複製して application-prod.properties を作成
※ 上の例だとprod
がプロファイルになるcp src/main/resources/application.properties src/main/resources/application-prod.properties
- AWS上の環境で使いたい設定に合わせて変更・追加
vi src/main/resources/application-prod.properties
- プロジェクトのディレクトリに移動
-
ビルド実行
mvn clean package -Dmaven.test.skip=true
-
プロファイルを指定して SpringBoot 起動
※ 実行時の引数に--spring.profiles.active=プロファイル
を追加java -jar target/ビルドで作られたjarファイル名 --spring.profiles.active=prod