EC2+RDS+SpringBootアプリケーションでwebページを公開する。
概要
EC2、RDS、MYSQL、SpringBootを使ったwebページ公開の方法がネットに転がってなかったので、自分がやってできた方法をメモ代わりに書いておきます。
本記事のゴール
SpringBootで作ったデータベースを使うアプリケーションをwebに公開できるようにします。
本記事は以下の環境や知識がある前提で進めます
- AWSアカウント
- eclipse2019 4.14
- maven
- JDK1.8
- Java8
- spring boot 2.1.1
- すでにデータベースを使うアプリケーションを作成済み
- EC2インスタンスを作成済み
- RDSインスタンスを作成済み
- RDSインスタンスにデータベース作成済み
- teratermでEC2にSSH接続済み
1.eclipseにAWS Toolkit for Eclipseをインストール
eclipseからRDSに接続するためにAWS Toolkit for Eclipseをインストールします。
(これをしないとアプリケーションをjarファイルにするときにエラーが起きます。)
①ヘルプ(H)」>「Eclipse マーケットプレイス(M)...」を選択。
②「AWS Toolkit for Eclipse 2.0」の「インストール」をクリック。
③インストールするツールを選択する画面が表示されるので、すべてにチェックが付いていることを確認し、「確認(C)>」をクリック。
④「使用条件の条項に同意します(A)」にチェックを付け、「完了(F)」。
⑤インストールが完了すると、再起動を促されるので、「はい(Y)」を選択。
⑥「AWS Toolkit for Eclipse」のアイコンが追加されます。
2.eclipseとEC2を接続する
①AWS toolkit for Eclipseのアイコンの横の▼をクリックし、「Open AWS Management Perspective」を選択。
「AWS Management」という「パースペクティブ」に切り替わります。
②「AWS Exploer」の「AWS Account not Configured」を選択した状態で右クリックし、「Configure AWS Accounts」を選択。
「アクセス・キーID(A):」「秘密アクセス・キー(S):」を入力します。
「アクセス・キーID(A):」「秘密アクセス・キー(S):」は、AWS側のコンソールの「すべてのサービス」>「IAM」を選択し、「ユーザー」でユーザーを選んだあとに、「認証情報」タブに切り替えて、
「アクセスキー」の項目の「アクセスキー ID」で「アクセス・キーID(A):」は確認できます。
アクセスキーがなければ「アクセスキーの作成」を押して作成しましょう。
「アクセス・キーID(A):」「秘密アクセス・キー(S):」を入力したらOKをおして接続完了となります。
3.Springアプリケーションの設定
①Pom.xmlを更新する
packingをjarにする(groupIdなどは各自で違います)
<groupId>com.example</groupId>
<artifactId>SpringSample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
spring-boot-maven-pluginの下にtrueを加える
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
②application.propertiesの更新
spring.datasource.url=jdbc:mysql://RDSのエンドポイント:3306/RDSにあるデータベース名?serverTimezone=JST
spring.datasource.username=RDSのユーザー名
spring.datasource.password=RDSのパスワード
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database=MYSQL
spring.datasource.initialize=true
spring.datasource.sql-script-encoding=utf-8
server.port=50000
RDSのエンドポイントなどは各自調べでお願いします。
server.port=50000はポート番号のルールに沿っていれば何番でも大丈夫です。
このポート番号がURLの一部になります。
4.アプリケーションをjarファイル化する
プロジェクト内に「target」というフォルダが現れ、そこにビルドしたjarファイルがあるはずです.
5.jarファイルをEC2にデプロイする
jarファイルのデプロイはteratermのGUIで簡単にできます。
ファイル→SSH SCP...→Fromにデプロイしたいファイルを指定→Send
詳しくはこちら↓
https://qiita.com/go-to/items/409e32116213bdf4b1ce
6.jarファイル化したアプリケーションの起動
デプロイされたjarファイルは/home/ユーザー名のところに配置されているので
以下のコマンドで実行してみましょう。
java -jar /home/ユーザー名/jarファイル名
するとEC2ないでSpringアプリケーションが実行されるので試しにブラウザ上で表示してみましょう。
http://EC2で用意されているIPv4パブリックIP:設定したポート番号/表示したいHTMLファイル名
で表示できます。
例:http://32.890.424.24:50000/login
7.アプリケーションのサービス化
問題なくブラウザ上で表示ができたら今度はアプリケーションをEC2サーバーの中でサービス化しましょう。
今の状態だとSSHの接続を切るとアプリケーションの起動も止まってしまうので、
バックグラウンド上で常に起動状態にするために行うのがサービス化です。
(LinuxOSの場合デーモン化とも呼びます。)
①サービス登録
サービス登録するためにEC2サーバー上で「アプリケーション名.service」ファイルを作ります。
vi /etc/systemd/system/アプリケーション名.service
[Unit]
Description = ファイルの説明文
After=syslog.target
[Service]
ExecStart = jarファイルのパス(例:/home/ec2-user/SpringSample-0.0.1-SNAPSHOT.jar)
Restart = always
Type = simple
User = jarファイルのユーザー
Group = jarファイルのグループ
SuccessExitStatus = 143
[Install]
WantedBy = multi-user.target
jarファイルのユーザーとグループは以下のコマンドで調べられます。
ls -l jarファイルのパス
②反映
ファイルを作成したらリロードして反映させます。
# systemctl daemon-reload
③自動起動有効
サーバーが立ち上がったら自動的に起動するようにします。
# systemctl enable アプリケーション名.service
④サービスの権限変更
chmod 744 jarファイルのパス
⑤サービスを起動
systemctl start アプリケーション名.service
⑥サービスの状態の確認
systemctl status アプリケーション名.service -l
以下のように表示れたらサービス化成功です。
● アプリケーション名.service - アプリケーション名
Loaded: loaded (/etc/systemd/system/アプリケーション名.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-07-08 11:07:05 UTC; 19h ago
Main PID: 22142 (SpringSample-0.)
CGroup: /system.slice/アプリケーション名.service
tq22142 /bin/bash /home/ユーザー名/アプリケーション名
mq22156 /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /home/ユーザー名/アプリケーション名
SSH接続を切ってもブラウザ上で表示できるようになっていると思います。
Author And Source
この問題について(EC2+RDS+SpringBootアプリケーションでwebページを公開する。), 我々は、より多くの情報をここで見つけました https://qiita.com/kachikata96/items/cdc961a860c63108ae76著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .