5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EC2+RDS+SpringBootアプリケーションでwebページを公開する。

Posted at

概要

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)...」を選択。
tool機能画像1.jpg

②「AWS Toolkit for Eclipse 2.0」の「インストール」をクリック。
tool画像2.jpg

③インストールするツールを選択する画面が表示されるので、すべてにチェックが付いていることを確認し、「確認(C)>」をクリック。

tool画像3.jpg

④「使用条件の条項に同意します(A)」にチェックを付け、「完了(F)」。
tool4.jpg

⑤インストールが完了すると、再起動を促されるので、「はい(Y)」を選択。
tool5.jpg

⑥「AWS Toolkit for Eclipse」のアイコンが追加されます。
tool6.jpg

2.eclipseとEC2を接続する

①AWS toolkit for Eclipseのアイコンの横の▼をクリックし、「Open AWS Management Perspective」を選択。
toool7.jpg
「AWS Management」という「パースペクティブ」に切り替わります。

②「AWS Exploer」の「AWS Account not Configured」を選択した状態で右クリックし、「Configure AWS Accounts」を選択。
tool8.jpg

「アクセス・キーID(A):」「秘密アクセス・キー(S):」を入力します。

「アクセス・キーID(A):」「秘密アクセス・キー(S):」は、AWS側のコンソールの「すべてのサービス」>「IAM」を選択し、「ユーザー」でユーザーを選んだあとに、「認証情報」タブに切り替えて、

9.jpg

「アクセスキー」の項目の「アクセスキー ID」で「アクセス・キーID(A):」は確認できます。
10.jpg

アクセスキーがなければ「アクセスキーの作成」を押して作成しましょう。

「アクセス・キー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ファイル化する

プロジェクトを右クリック > 実行 > install
11.jpeg

プロジェクト内に「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接続を切ってもブラウザ上で表示できるようになっていると思います。

5
7
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
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?