はじめに
Spring Bootで作成したWebアプリケーションを、AWSのEC2を利用してインターネット上に公開する手順をまとめることにします。
SSHなどで操作するPCはWindowsを前提に作成しています。
たぶん今後何度も同じことをすると思うので手順書として記録を残します。
とにかく何でもいいからEC2でWebアプリをデプロイしたい方にとっても読む価値はあるかもしれません。
今回は、以下の構成を作成します。
インターネット
↓
AWS EC2
↓
Ubuntu
↓
Java
↓
Spring Boot
サーバーはUbuntuで構築し、UbuntuのなかにJava17をインストールしてWebアプリをデプロイします。
最終的には、ブラウザから
http://EC2のパブリックIPv4アドレス:8080/hello
のようにアクセスして、Spring BootのWebページを表示できる状態を目指します。
なお、本記事ではまず「AWS上でSpring Bootを動かす」ことを目的としているので、本番環境では、後述するようにNginxやHTTPSなどを導入することが望ましいです。
この記事は以下の順番に解説します。(量が多いので小分けに記事を投稿します。)
-
AWSアカウントを作る
-
EC2を作る
- EC2にSSH接続する
- EC2にJavaをインストールする
- Spring BootアプリをJAR化する
- JARをEC2に送る
- Spring Bootを起動する
- AWSの通信設定をする
- ブラウザからアクセスする
- systemdで自動起動させる
- Webアプリの停止方法を学ぶ
パート1は
- AWSアカウントを作る
- EC2を作る
をやります。
1. AWSアカウントを用意する
AWSアカウントを作成してください。
作成出来たら、AWSマネジメントコンソールにログインします。
(アカウント作成方法は記載しないんかい! という突っ込みはご遠慮ください。)
今回はAWSの仮想サーバーサービスであるEC2を利用します。
2. EC2を作成する
AWSコンソールの検索欄から、
EC2
を検索してEC2の画面を開きます。
2-1. リージョンを選択する
アジアパシフィック(東京)
ap-northeast-1
を選択します。
2-2. インスタンスを起動する
EC2の画面から、
インスタンスを起動
を選択します。
2-3. インスタンス名
名前は自由に設定できますが、今回は、
springboot-server
としました。
2-4. OSを選択する
Ubuntu Server
を選択します。
Spring BootをLinuxサーバー上で動かすための環境としてUbuntuを利用します。
2-5. インスタンスタイプ
個人開発・学習目的であれば、小さめのインスタンスタイプから始めます。
例:
t3.micro
ただし、AWSの無料利用枠はアカウントの作成時期などによって条件が異なるため、作成時に料金・無料利用枠の対象であるかを確認してください。大富豪の方は気にせず好きなインスタンスタイプから始めてください。
2-6. キーペアを作成してダウンロードする
EC2へSSH接続するためにキーペアを作成します。
例えば、
springboot-key
という名前にします。
キーペアの種類は
RAS
を選択します。
WindowsのPowerShelからSSH接続する場合は、プライベートキーファイル形式は
.pem
を選択します。
その後、「キーペアを作成」を押すとPCにダウンロードされます。
注意
.pem ファイルは非常に重要です。
以下のようなことはしないでください。
- 他人に渡す
- GitHubにアップロードする
- 公開リポジトリに入れる
2-7. ネットワーク設定
ネットワーク設定では主に、
- VPC
- サブネット
- パブリックIP
- セキュリティグループ
などを設定します。
初めてなら、基本的にはAWSが用意しているデフォルト設定を利用して構いません。
「インバウンドのセキュリティグループのルール」には
- SSH
- TCP
- 22
のようなルールがあると思います。これは、
PCからEC2へSSH接続するための通信
です。
SSHの接続元は、
マイIP
を指定します。こうすることで、
あなたのPC
↓
SSH : 22
↓
EC2
という接続だけを許可できます。
2-8. HTTPの設定
タイプ:HTTP
ポート:80
ソース:0.0.0.0/0
がもともとありますが、
http://EC2のIP:8080
でアクセスしてみたいので以下の設定を行います。
ネットワーク設定の右上にある「編集」をクリックし、「セキュリティグループルールを追加」をクリックすると新たにグループを作成できるようになるので、
タイプ:カスタムTCP
ポート範囲:8080
ソースタイプ:カスタム
ソース:0.0.0.0/0
をそれぞれ選択・入力しておきます。
ただし、最終的にはHTTPSを利用することを推奨します。
今回はまず動作確認を優先してHTTPを設定するのでHTTPSの設定はほかの記事を参考にしてみてください。
2-9. ストレージを設定
今回はデフォルトの
8 GiB gp3
のままにしておきます。
EC2作成画面にある「ファイルシステム」は、
なし
を選択します。
今回のSpring Bootアプリを動かすだけであれば、追加のファイルシステムは必要ないようです。
2-10. インスタンスを起動
設定が完了したら、
インスタンスを起動
をクリックします。
インスタンスの状態が、
Running(または実行中)
になればEC2の作成は完了です。
3. 次回予告
1つの記事にまとめるつもりでしたがあまりにも長くなりそうなので小分けにすることにしました。
次回はEC2にSSH接続する手順を解説します。