📚

Amazon Linux2 でJava8の環境構築をしてみる

5 min read

全体の流れ

  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
※バックグラウンド実行する場合は下記コマンド
$ nohup java -jar <ファイル名>.jar &

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

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

...

AWSでの変更点

Security Groupの変更

  • インバウンドルールでポート8080への接続を許可する

追記

systemdのサービスに登録してプロジェクトを自動起動させる方法

  1. 起動用スクリプトを作成
  2. serviceファイルを作成
  3. サービスとして起動

1.起動用スクリプトを作成

新規ファイル作成
$ vim ~/api/start.sh
以下を記載

#!/bin/sh

# 同じディレクトリ内の JAR ファイル
java -jar `dirname $0`/todo-app-0.0.1-SNAPSHOT.jar

権限付与
$ chmod +x ~/api/start.sh

2.serviceファイルを作成

新規ファイル作成
$ vim /etc/systemd/system/api.service
以下を記載

[Unit]
Description=This is my application.
After=syslog.target

[Service]
User=ec2-user
ExecStart=/home/ec2-user/api/startup.sh
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

3. サービスとして起動

サービスに登録
$ sudo systemctl enable api.service

サービスを起動
$ sudo systemctl start api.service

※サービスの状態は以下のコマンドで確認しましょう
$ systemctl status api.service

Discussion

ログインするとコメントできます