AWS EC2(아마존 리눅스2) 생성과 Java 13 설치
스프링 부트와 AWS로 혼자 구현하는 웹 서비스의 나온 내용을 정리 해봤다. EC2는 자주 사용하지만 세세한 설정 등은 처음 본 것들도 있어서 공부한 보람이 있다.
책은 아마존 리눅스 1 이미지, JDK 8로 진행했으나 최근에 진행 중인 프로젝트가 아마존 리눅스 2, JDK 13이어서 책과는 다른 부분이 있으니 참고 바란다.
AWS 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 [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 생성과 기본 설정 (1779) | 2020.07.07 |
---|