MENU

AWS(EC2,RDS(MySQL))環境にSpringBootで作成したアプリをデプロイ

こんにちは、くまごろーです。
昨日、やっとAWSで構築した環境に、家計簿アプリをデプロイすることができました!
まだまだ修正するところはたくさんありましたが、ひとまず安心しました(-_-;)
今回のサーバー環境には、RDSにMySQLを導入しており、アプリとRDS内のMySQLをどうやって接続すればいいのかというのが苦戦ポイントでした。
そこら辺の方法をまとめておこうと思います。
 
 
 
1 前提
 
環境構築は済んでいる前提で話します。
今回は、AWS教材ではおなじみの、山浦さんのUdemy講座を参照しました。
www.udemy.com
手順だけでなく、サーバー・ネットワーク関係の基礎知識も説明してくれているのでおすすめです。

インフラ図としてこんな感じです。(合ってるかな・・・?)

f:id:kumaGoro_95:20210226115537p:plain
 
ほぼ、山浦さんの講座の通りに構築しました。
で、その上で以下のミドルウェアを導入しました。

<EC2>
→ nginx(リバースプロキシ設定済)・Tomcat

<RDS>
→ MySQL
 
 
 
2 手順
 
手順は非常に単純でした。

  1. EC2の環境変数を設定して、SpringBootアプリがVPC内のMySQLに接続できるようにする。
  2. アプリケーションをSTSMavenビルドして、jarファイルにする。
  3. jarファイルをTomcatのwebappsフォルダに移動させて実行する。


 
でも、ここまでたどり着くのに結構時間かかりました・・・(-_-;)
 
 
 
3 EC2の環境変数を設定して、アプリがVPC内のMySQLに接続できるようにする。
 
現在のアプリケーションは、ローカル環境のMySQLに接続するよう設定されていると思います。これをAWS環境内のMySQLに繋がるよう設定変更しなければいけません。ここが地味に苦戦ポイントでした。
 
最初私は「application.propertiesの設定をいじって、ビルドすればいいんだよね?」なんて考えてトライしてみたんですが、
ビルドできない!

VPCMySQLは、プライベートサブネットの中に構築されたRDS内にあるので、外からはアクセスできないんですよね。それで接続エラーになっちゃのでビルドできないと。
 
じゃあどうすればいいのか?
なんと、SpringBootアプリのDB接続先は、環境変数で設定できるらしい・・・
本当、ここら辺の知識が無いの痛感しました。
 
以下、手順です。

(1)EC2にログインして、bash_profileを編集する

#vim ~/.bash_profile

(2)以下の環境変数を追加する

export SPRING_DATASOURCE_URL=jdbc:mysql://エンドポイント名:3306/example_db
export SPRING_DATASOURCE_USERNAME=MySQLユーザー名
export SPRING_DATASOURCE_PASSWORD=MySQLパスワード
export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver

(3)編集結果を反映させる

#source ~/.bash_profile


※ ちなみに、環境変数はこのコマンドで確認できます。

#printenv




4 アプリケーションをSTSMavenビルドして、jarファイルにする。

[プロジェクト名を右クリック]>[実行]>[Mavenビルド] で、アプリをjar化します。
生成されたjarファイルは、targetフォルダに格納されます。
 
 
 
5  jarファイルをTomcatのwebappsフォルダに移動させて実行する。
 
以下のコマンドでjarファイルを実行。

java -jar ファイル名

 
これで、URLを叩けばデプロイしたアプリケーションが表示されるはず・・・


6 参考