こんにちは、くまごろーです。
昨日、やっとAWSで構築した環境に、家計簿アプリをデプロイすることができました!
まだまだ修正するところはたくさんありましたが、ひとまず安心しました(-_-;)
今回のサーバー環境には、RDSにMySQLを導入しており、アプリとRDS内のMySQLをどうやって接続すればいいのかというのが苦戦ポイントでした。
そこら辺の方法をまとめておこうと思います。
1 前提
環境構築は済んでいる前提で話します。
今回は、AWS教材ではおなじみの、山浦さんのUdemy講座を参照しました。
www.udemy.com
手順だけでなく、サーバー・ネットワーク関係の基礎知識も説明してくれているのでおすすめです。
インフラ図としてこんな感じです。(合ってるかな・・・?)
ほぼ、山浦さんの講座の通りに構築しました。
で、その上で以下のミドルウェアを導入しました。
<EC2>
→ nginx(リバースプロキシ設定済)・Tomcat
<RDS>
→ MySQL
2 手順
手順は非常に単純でした。
- EC2の環境変数を設定して、SpringBootアプリがVPC内のMySQLに接続できるようにする。
- アプリケーションをSTSでMavenビルドして、jarファイルにする。
- jarファイルをTomcatのwebappsフォルダに移動させて実行する。
でも、ここまでたどり着くのに結構時間かかりました・・・(-_-;)
3 EC2の環境変数を設定して、アプリがVPC内のMySQLに接続できるようにする。
現在のアプリケーションは、ローカル環境のMySQLに接続するよう設定されていると思います。これをAWS環境内のMySQLに繋がるよう設定変更しなければいけません。ここが地味に苦戦ポイントでした。
最初私は「application.propertiesの設定をいじって、ビルドすればいいんだよね?」なんて考えてトライしてみたんですが、
ビルドできない!
VPCのMySQLは、プライベートサブネットの中に構築された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 アプリケーションをSTSでMavenビルドして、jarファイルにする。
[プロジェクト名を右クリック]>[実行]>[Mavenビルド] で、アプリをjar化します。
生成されたjarファイルは、targetフォルダに格納されます。
5 jarファイルをTomcatのwebappsフォルダに移動させて実行する。
以下のコマンドでjarファイルを実行。
java -jar ファイル名
これで、URLを叩けばデプロイしたアプリケーションが表示されるはず・・・
6 参考