These days, containers and ECS/EKS seem to be all the rage. However, I wanted to make sure I could still install and run my application on an EC2 Instance.
I decided to create an EC2 Instance t2.micro) using the AMI for Amazon Linux 2.
Step 1: Installing Java 17 (Amazon Corretto)
I logged in using the private key from the Keypair I generated and installed Java 17:
login as: ec2-user
Authenticating with public key "java-demo-keypair"
Last login: Mon Dec 19 02:54:32 2022 from **********
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-72 ~]$ sudo yum install java-17-amazon-corretto
after all the dependencies were downloaded, installed, and this completed, I verified:
[ec2-user@ip-10-0-0-72 ~]$ java -version
openjdk version "17.0.5" 2022-10-18 LTS
OpenJDK Runtime Environment Corretto-17.0.5.8.1 (build 17.0.5+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.5.8.1 (build 17.0.5+8-LTS, mixed mode, sharing)
Finally, I added a Bash script to /etc/profile.d to set JAVA_HOME and PATH to include JAVA_HOME.
[ec2-user@ip-10-0-0-72 ~]$ sudo vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64
and sourced this Bash script so it would take effect immediately:
[ec2-user@ip-10-0-0-72 ~]$ source /etc/profile.d/java.sh
Step 2: Create Service to run Spring Boot App
Create java-user (in java-group) with a home directory of /opt/java-apps
[ec2-user@ip-10-0-0-72 ~]$ sudo groupadd -r java-group
[ec2-user@ip-10-0-0-72 ~]$ sudo useradd -r -m -g java-group -d /opt/java-apps -s /bin/false java-user
I copied the Spring Boot JAR into /opt/java-apps/demo.jar and created the following Systemctl Service file:
[root@ip-10-0-0-72 system]# sudo vi /etc/systemd/system/springboot.service
[Unit] Description=Java Spring Boot Demo App After=syslog.target [Service] WorkingDirectory=/opt/java-apps ExecStart=/bin/java -jar demo.jar SuccessExitStatus=143 User=java-user Group=java-group [Install] WantedBy=multi-user.target
No comments:
Post a Comment