AWS EC2(아마존 리눅스2) 생성과 Java 13 설치

스프링 부트와 AWS로 혼자 구현하는 웹 서비스의 나온 내용을 정리 해봤다. EC2는 자주 사용하지만 세세한 설정 등은 처음 본 것들도 있어서 공부한 보람이 있다.

책은 아마존 리눅스 1 이미지, JDK 8로 진행했으나 최근에 진행 중인 프로젝트가 아마존 리눅스 2, JDK 13이어서 책과는 다른 부분이 있으니 참고 바란다.

AWS EC2 인스턴스 생성

EC2 대시보드 → 인스턴스 시작


EC2 인스턴스 시작

이미지 선택


인스턴스 이미지 선택

Amazon Linx 2 AMI 선택

  • Centos 7 버전 내용과 호환
  • 아마존이 개발하고 있어 지원 받기 쉽다.
  • 레드햇 베이스이므로 레드햇 계열의 배포판을 다뤄본 사람일수록 사용하기 쉽다.
  • AWS의 각종 서비스와 상성이 좋다.
  • Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.

인스턴스 유형 선택


인스턴스 유형 선택

  • t2.micro 선택

T 시리즈

  • 크레딧인란 CPU를 사용할 수 있는 포인트 개념 존재
  • 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받으며 사용하지 않을 때 축적하고 사용할 때 크레딧을 계속 사용한다
  • 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다.
  • 트래픽이 높은 서비스인 경우 다른 유형의 인스턴스를 사용한다.

인스턴스 세부 정보 구성


인스턴스 세부 정보 구성

  • 오토스케일링, 서브넷, VPC, 모니터링 등 용도에 맞게 세부적인 설정 가능
  • 지금은 크게 변경할 내용이 없다.

스토리지 추가


스토리지 추가

  • 프리 티어의 경우 30GB 까지 스토리지 사용 가능

태그 추가


태그 추가

  • 인스턴스에 태그 추가
  • 인스턴스가 많아질 경우 태그를 통해 관리가 용이하다.

보안 그룹 구성


보안 그룹 구성

  • 방화벽 설정
  • SSH 22 포트와 내 IP 규칙 추가
  • 웹 서비스 포트 Public 추가
  • HTTPS 포트 Public 추가

키 페어 생성


키 페어 생성

키 페어 등록

  • 다운로드 받은 키 페어를 등록하자
$ cd .ssh
$ mv ~/Downloads/springboot-aws-study-webservice.pem .
$ chmod 600 springboot-aws-study-webservice.pem
$ ssh-add springboot-aws-study-webservice.pem

인스턴스 대시보드에서 확인


인스턴스 대시보드 목록 확인

EIP 할당

  • AWS의 고정 IP 서비스 Elastic IP(EIP, 탄력적 IP)

  • 좌측 메뉴에서 탄력적 IP를 선택

 

  • 탄력적 IP 주소 할당 클릭

 

  • 할당 클릭

 

  • 이 탄력적 IP 주소 연결 또는 주소 Actions에서 탄력적 IP 주소 연결 선택

 

  • 생성한 EC2에 연결
  • 인스턴스와 프라이빗 주소의 드롭다운 목록에서 선택
  • 생성한 탄력적 IP를 EC2에 연결하지 않으면 비용이 발생하므로 바로 연결하는 것이 좋다.
  • 인스턴스가 없을 경우 탄력적 IP는 바로 삭제하는 것이 좋다.

인스턴스 정보 확인

인스턴스 정보 확인

  • 인스턴스 목록에서 인스턴스 선택 후 아래에 표시되는 세부 정보의 탄력적 IP에 할당된 모습 확인

터미널로 EC2 인스턴스 접속

pem키 등록

$ cd .ssh
$ mv ~/Downloads/springboot-aws-study-webservice.pem .
$ chmod 600 springboot-aws-study-webservice.pem
$ vim ~/.ssh/config

# Edit config                                                                                                                 Buffers
    # springboot-aws-study-webservice
  Host springboot-aws-study-webservice
      HostName [탄력적 IP]
        User ec2-user
      IdentityFile ~/.ssh/springboot-aws-study-webservice.pem

# config 저장 및 종료 :wq

# config 실행 권한 등록
$ chmod 700 ~/.ssh/config

SSH 호스트 Config

  • ssh [Host 이름]으로 바로 접속 가능하다.
ssh springboot-aws-study-webservice

접속 결과

인스턴스 아마존 리눅스 서버 설정

JDK 설치

  • openjdk13 설치를 진행한다.
  • 아마존 레포지토리에는 8버전까지 밖에 없어 13을 다운로드 한다.
$ curl -O https://download.java.net/java/GA/jdk13.0.2/d4173c853231432d94f001e99d882ca7/8/GPL/openjdk-13.0.2_linux-x64_bin.tar.gz

# 다운로드 하면서 아래와 비슷한 내용이 출력
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  186M  100  186M    0     0  10.0M      0  0:00:18  0:00:18 --:--:-- 9961k

# 다운로드 완료된 것 확인
$ ls
openjdk-13.0.2_linux-x64_bin.tar.gz

# 압축 풀기
$ tar -xvf openjdk-13_linux-x64_bin.tar.gz
$ ls
jdk-13.0.2  openjdk-13.0.2_linux-x64_bin.tar.gz

# /opt/ 디렉토리로 이동
$ sudo mv jdk-13.0.2 /opt
$ cd /opt
$ ls
aws  jdk-13.0.2  rh

# 환결변수 설정
$ cd /etc/profile.d
$ vim jdk13.sh

# Edit jdk13.sh
export JAVA_HOME=/opt/jdk-13.0.2
export PATH=$PATH:$JAVA_HOME/bin
## 저장 및 종료 :wa

# 설정 반영
$ source /etc/profile.d/jdk13.sh

# 확인
$ echo $JAVA_HOME
/opt/jdk-13.0.2

$ java --version
openjdk 13.0.2 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
  • [참고사항] curl -O 링크 참고 주소: 자바 릴리즈 아카이브 에서 JDK 13 최신 메이저 버전에서 Linux 운영체제의 tar.gz의 링크를 복사해와서 curl로 받아온다.

서버 시간대(타임존) 변경

  • 기본 타임존은 UTC (세계 표준시)로 우리나라와 9시간 차이가 난다.
  • 한국시간대 (KST)로 변경하자
# 현재 시간 확인
$ date
Sun Jun 28 13:25:53 UTC 2020

# 시간대 정보 변경
$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 심링크 확인
$ ll /etc/ | grep localtime
lrwxrwxrwx  1 root root       30 Jun 28 22:26 localtime -> /usr/share/zoneinfo/Asia/Seoul

# 현재 시간 다시 확인
$ date
Sun Jun 28 22:27:26 KST 2020

호스트네임 변경

  • 여러 서버를 관리할 때 IP만으로 어떤 서비스의 서버인지 확인이 어렵다.
  • Hostname을 설정하자
$ sudo hostnamectl set-hostname springboot-aws-study-webserivce
$ hostname
springboot-aws-study-webserivce

$ sudo systemctl restart network

$ sudo reboot

 

참고

  • 이동욱. 2019. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스. 프리렉

'프로그래밍 > AWS' 카테고리의 다른 글

AWS RDS 생성과 기본 설정  (2) 2020.07.07

+ Recent posts