Amazon Linux2 でJava8の環境構築からSpringの起動まで

## 全体の流れ
1. [EC2]Amazon Linux2 でJava8の環境構築
2. [ローカル]ローカルでSpringプロジェクトを作成する
3. [EC2]Springプロジェクトを起動する

## Amazon Linux2 でJava8の環境構築
### 1.sshでEC2インスタンスに接続
`$ ssh -i <key名>.pem ec2-user@<パブリックIPアドレス>`

### 2.JREのインストール
`$ sudo yum search java | grep jdk`
`$ sudo yum install -y java-1.8.0-openjdk.x86_64`

```
$ sudo yum search java | grep jdk
ldapjdk-javadoc.noarch : Javadoc for ldapjdk
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility-debug.x86_64 : OpenJDK 8 accessibility
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment 8 with full debug
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos 8 with full debug on
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment 8 with
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK 8 API documentation for
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed
java-1.8.0-openjdk-javadoc-zip-debug.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle 8 for packages with
ldapjdk.noarch : The Mozilla LDAP Java SDK
```

JRE1.8.0をインストール

```
$ sudo yum install -y java-1.8.0-openjdk.x86_64
```

※ openjdkとopenjdk-develの2種類があるが、EC2上での開発は想定していないので、今回はopenjdkをインストール。ちなみに上がJREのことで下はJDK。
- java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
- java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment

### Javaのバージョンを確認しておく
`$ java -version`

```
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
```
ちゃんと1.8.0になっている。

## ローカルでSpringプロジェクトを作成する
jarファイル、Java Archive（Javaアーカイブ）とは、Javaプロジェクトに含まれるクラスファイルや画像データなどひとまとめにしたZIP形式の圧縮ファイルのこと。

このファイルをEC2側にコピーして、ビルドしてあげる。

### 1.プロジェクトからjarファイルを生成
ローカル（自分のPC）にあるSpringプロジェクトのディレクトリに移動して、コマンドでjarファイルを生成

```
$ cd プロジェクトのディレクトリ
$ mvn clean package
```

### 2.sftpでファイルをコピー
```
## sftp connect
$ sftp -i <key名>.pem ec2-user@<パブリックIPアドレス>
## file put
sftp> put target/<ファイル名>.jar
```

### 注意点
- SpringBootプロジェクトのjavaバージョンを8に設定する

-> pom.xmlのpropatyをいじる

```
<properties>
	<java.version>8</java.version>
</properties>
```

-> 環境パスを変更

```
$ cd ~/.zshrc
$ vi .zshrc
## 以下の設定を追記する
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8"`
PATH=$JAVA_HOME/bin:$PATH
```

-> 最後に更新するのを忘れず

```
$ source ~/.zshrc
```

## Springプロジェクトを起動する
### 1.sshでEC2インスタンスに接続
`$ ssh -i my-key.pem ec2-user@<パブリックIPアドレス>`

### 2.javaコマンドでプロジェクトをビルド
`$ java -jar <ファイル名>.jar`

```
$ java -jar todo-app-0.0.1-SNAPSHOT.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.3.RELEASE)

...
```

## AWSでの変更点
Security Groupの変更
- インバウンドルールでポート8080への接続を許可する