Amazon Linux2 でJava8の環境構築をしてみる
全体の流れ
- [EC2]Amazon Linux2 でJava8の環境構築
- [ローカル]ローカルでSpringプロジェクトを作成する
- [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のサービスに登録してプロジェクトを自動起動させる方法
- 起動用スクリプトを作成
- serviceファイルを作成
- サービスとして起動
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