SEワンタンの独学備忘録

独学した内容や資格試験に対する取り組みの備忘録

【AWS】入門その⑧ EC2とRDSを利用して簡易Webアプリを構築してみる

【EC2とRDSを利用して簡易WEBアプリを構築してみる】

気付いたら前回の記事から一か月以上経過していました久しぶりのAWSです。
他のことをやっていたり準備があったりもあるんだけどちょっと絞った方がいいのかと思い始めた今日この頃。

今回の構築イメージ

お絵描き妥協しました。

f:id:wantanBlog:20190918221544p:plain

AWS上のEC2とRDSインスタンスを生成して、EC2上でTomcatを起動。
アプリの本体となるwarファイルはローカルのEclipseで生成したもので、EC2に配置する。
ローカルのブラウザからEC2へリクエストを行い、処理の中でSQLを発行しEC2からRDSへ接続、最終的にレスポンスをブラウザへ返します。

前提条件(構築、作成済み)

・warファイルの元となるプロジェクトは作成済み。
アプリの中身は違いますがwarファイルの作成手順は以下の過去記事と同様。

www.wantanblog.com

・EC2インスタンスは生成済み
過去に生成したものは一度削除してしまったので、過去記事の手順に沿って再生成しました。

www.wantanblog.com

・RDSインスタンス生成及びローカルからの接続確認済み。
一旦はその⑦で生成したものをほぼそのまま使用する形になります。

www.wantanblog.com


EC2の設定、準備

セキュリティグループの設定

大したものではありませんが一応確認。
インバウンド側の設定です。

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 8080 自分のIPアドレス
SSH TCP 22 自分のIPアドレス

上がブラウザからのTomcat接続用、下がコンソール(teraterm)からの接続用です。

Tomcatのインストール

ローカルからteratermで接続を行い以下のコマンドを実行していきます。

基本的には以下の過去記事の通りで、OpenJDK11をインストールし、Tomcat9のインストールすることとしました。

www.wantanblog.com

以下は断りがない限り、コンソールからの操作になります。

・rootユーザにスイッチ

sudo su -

EC2インスタンスを生成したばかりの段階ではrootユーザのパスワードが設定されていないため、そのままの「su -」ではスイッチできないようです。

・OpenJDK 11 インストール

EC2サーバにはデフォで入っているわけではないみたいなのでダウンロードするところからです。

ダウンロード(場所はどこでもいいみたいですが、/tmpで実行)

curl -L -O "https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz"

圧縮ファイルの解凍

tar zxf openjdk-11_linux-x64_bin.tar.gz -C /usr/local

環境変数の設定

export JAVA_HOME=/usr/local/jdk-11
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar

初期設定(JDKの選択)

alternatives --install /usr/bin/java java /usr/local/jdk-11/bin/java 2
alternatives --config java

JDKのバージョンが11になっていることを確認。

java -version

・Tomcat9 インストール

ダウンロード

curl -O http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz 

解凍

tar -xzvf apache-tomcat-9.0.24.tar.gz

移動

mv apache-tomcat-9.0.24 /usr/libexec/tomcat9

ユーザ追加

useradd -M -d /usr/libexec/tomcat9 tomcat

所有者の変更

chown -R tomcat. /usr/libexec/tomcat9

Tomcat9の起動

sudo -u tomcat /usr/libexec/tomcat9/bin/startup.sh


※systemctlコマンドが実行できなかったため、起動シェルを直接叩きました。なんで??
使えるならsystemctlでよいのだと思います。
一旦これで起動の確認ができたのでこれでよしとしますが、勉強不足のため時間があったらsystemctlコマンドについては再検討したい。


起動の確認
http://[EC2のIPアドレス]:8080/

f:id:wantanBlog:20190921184357p:plain

JDBCドライバのインストール

EC2からRDS(Mysql)に接続するためのJDBCドライバをインストールする。

インストール

sudo yum -y install mysql-connector-java

Tomcatが使用できるようにtomcatディレクトリにコピーしておきます。

コピー

cp /usr/share/java/mysql-connector-java-5.1.12.jar /usr/libexec/tomcat9/bin/

warファイルの生成とデプロイ

DB接続パラメータの設定

warファイル作成の前にDB接続情報の設定を行っておきます。
ここは使用しているフレームワークやプロジェクト構成で微妙に変わってくるかもしません。

接続DB情報の変更

接続先のURLはEclipseのデータエクスプローラーから確認できます。
対象DBのプロパティからドライバーのプロパティを選択しURLの部分をコピーします。

f:id:wantanBlog:20190921182706p:plain

この情報をDBの接続先を設定するファイルに記述します。
私の場合は「todoMyBatis-infra.properties」というファイルに以下のように設定しました。

database.url=jdbc:mysql://testdb3.casmuwjfmmlq.ap-northeast-1.rds.amazonaws.com:3306/testdb
database.username=root
database.password=[パスワード]
warファイルの生成

任意の方法でwarファイルの生成を行います。
私の場合はMavenプロジェクトなのでmvnコマンドで。詳細は過去記事に記載してあるので割愛します。

EC2にwarファイルをデプロイする

teratermからEC2に配置します。

f:id:wantanBlog:20190921182514p:plain

上記の置き方ではec2‐userのホーム直下に配置されるのでTomcatのフォルダに移動します。

mv todoMyBatis.war /usr/libexec/tomcat9/webapps/

おけばtodoMyBatisのフォルダが生成されるはずです。

動作確認

構築したアプリに接続を行います。

http://[EC2のIPアドレス]:8080/[配置したアプリの構成]

私の場合は以下の通りです。

http://[EC2のIPアドレス]:8080/todoMyBatis/userList/list

以下、動作確認になりますので構築したアプリに沿って進めてください。

・リスト画面の表示(初期表示)
RDS構築時にSQLで登録したユーザが登録されているのでOK。

f:id:wantanBlog:20190921184558p:plain


・ユーザ登録
ユーザが登録されたのでOK。

f:id:wantanBlog:20190921184855p:plain


・ユーザの削除
ユーザが削除できたのでOK。

f:id:wantanBlog:20190921185041p:plain

・ユーザの検索
指定した検索条件(削除済み含む)で検索できているのでOK。

f:id:wantanBlog:20190921185238p:plain



画面表示や処理機能でのDBとの連携もうまくいっているので問題なさそうです。



感想とか

思ったよりはつまらずにできました。EC2とRDSの連携で苦労するかと思ったけど一発でうまくいきました。
ドライバや接続情報の設定部分は事前にローカル環境で同じようなことを試しておいたためすんなりいったのかもしれません。

逆に苦労した部分はEC2の設定部分で、Tomcatのインストールや起動に手間取りました。
systemctlって使えないことないと思ってた。現状では自動起動の設定もできてないしうーん。。
Linuxは自分で勉強はしてるけど、業務でしっかりやっているわけじゃないから理解が浅い部分が多い。

次回はPVCについてかな。