LoginSignup
0
0

AWS の EC2(Amazon Linux 2023) で SpringBoot ビルドして実行

Last updated at Posted at 2024-04-05

AWS の EC2 の Amazon Linux 2023 に Java インストールして Github から取得した SpringBoot をデプロイして実行した時の備忘録メモ
実施したのは 2024/04/04 時点です

  • ざっくり流れ

    1. Github プロジェクト作成
    2. Github トークン取得(privateの時のみ必要)
    3. EC2インスタンス起動
    4. EC2ログイン
    5. Javaインストール
    6. Mavenインストール
    7. Git インストール
    8. Github からプロジェクトをクローン
    9. プロジェクトビルド
    10. SpringBoot 起動
    11. 環境変数の対応
  • 環境情報

    • EC2 (Amazon Linux 2023)
    • SpringBoot v3.2.3
    • Java v21
    • Windows11
    • Tera Term v5.2
    • Git v2.40.1
    • Maven v3.5.2

Github プロジェクト作成

SpringBoot のスタータを使って maven で作っておく
それを Github に置けばOK、内容はなんでも大丈夫!
リポジトリを private にするとトークンが必要になる
ミニマムなやつの参考はこちら

Github トークン取得(privateの時のみ必要)

EC2 から Github の private なプロジェクトをクローンするときに使う
作った時しかトークン確認できないので注意

  1. Githubログインして右上ユーザアイコン - Settings をクリック
    image.png

  2. 左メニューの下までいって Developer setting クリック
    image.png

  3. Personal access tokens - Tokens(classic) - Generate new token - Generate new token(classic) をクリック
    ※ 2段階認証の設定してる人はクリック後に認証の画面が入ります
    image.png

  4. 以下を入力して Genarate token をクリック

    • Note : なんでもOK(なんかしら入力必要)
    • Expiration : 期限を入力(No expiration にすると無期限になる)
    • repo : 必ずチェックする
      image.png
  5. トークンが出力されるので必ず保存!
    image.png

    トークンはここでしか確認できないかも...保存忘れずに!

EC2インスタンス起動

AMI は Amazon Linux 2023にして ssh で接続するのでキーペアとかちゃんと設定する
SpringBoot で使うポート(デフォルトは 8080 )を外部から接続できるようにセキュリティグループを追加
そのほかは自由でOK

image.png

EC2 ログイン

windows pc でTeraTerm でアクセス
ホストに EC2 の パブリックIP、ユーザ名 ec2-user、認証方式を RSA 鍵使うにして秘密鍵に pem ファイルを指定

image.png

  • root に変更
    sudo -i
    

Java インストール

  • インストール(v21)

    sudo yum install java-21-amazon-corretto -y
    
  • インストール確認(バージョン出力)

    java -version
    
  • 補足:複数バージョンで切替えたいとき
    Javaの他のバージョンの SpringBoot 使いたいときのため念のため...
    他のバージョンの Java をインストールして以下のコマンド実行して選択する感じ

    sudo alternatives --config java
    

Mavenインストール

  • ダウンロード

    sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
    
  • リポジトリパッケージバージョン指定(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 リポジトリ名
    
  • ビルド実行

    mvn package
    
  • 作成した jar 確認

    ls -l target/*.jar
    

SpringBoot 起動

java -jar target/ビルドで作られたjarファイル名

実行時にプロファイルを設定するときの参考

  • コマンドライン引数
    java -jar target/ビルドで作られたjarファイル名 --spring.profiles.active=プロファイル
  • システムプロパティ
    java -jar -Dspring.profiles.active=プロファイル target/ビルドで作られたjarファイル名

アクセス確認

外からつながるようにしてたらアクセスできるはず...

http://パブリックIP:ポート番号/URLパス

環境変数の対応

AWS上で起動するときは開発環境とは違う設定を使いたいときが多いので環境変数の対応を簡易に...
Spring のプロファイル機能で application.propeties(.yaml) を切替える感じです

  1. 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
      
  2. ビルド実行

    mvn package
    
  3. プロファイルを指定して SpringBoot 起動
    ※ 実行時の引数に --spring.profiles.active=プロファイル を追加

    java -jar target/ビルドで作られたjarファイル名 --spring.profiles.active=prod
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0