※ 참고사항
앞으로 진행하는 실습은 터미널(CMD)에서 주로 진행됩니다. 그래서 저같은 경우에는 파일명, sciprt 오타로 인해서 이슈가 많이 발생했었습니다. 책 또는 블로그에 따라서 진행하면서 정상동작이 안되는 경우에는 오타가 있는지, 없는 지 확인 후 저자 git issue(github.com/jojoldu/freelec-springboot2-webservice/issues) 또는 구글링을 하면 좋습니다.
※ Amazon Linux 2 AMI으로 진행
Amazon Linux AMI의 표준 지원은 2020년 12월 31일에 종료되었다고 합니다. 그래서 Amazon Linux 2 AMI으로 진행합니다.
aws.amazon.com/ko/amazon-linux-ami/
※ Windows로 진행(putty 설치) -> 저는 Windows PowerShell로 진행
1. pem 설정하기(보호되지 않은 개인 키 파일 이슈 -> 보안설정 변경)
아래 youtube를 보고 진행
www.youtube.com/watch?v=FOTJm5oLo64
※ 리눅스 명령어
dora-guide.com/linux-commands/
※ yum 패키지 관리도구
※ vim 편집기 명령어
ex. vim ~~ 를 통해서 편집기 접속 i(현재 커서의 위치로 부터 입력)클릭 문구 수정 후 esc(명령모드로 전환) 클릭 후 저장(:wq)
- 아마존 리눅스 2 서버 생성 후 꼭 해야하는 설정들
자바 기반의 웹 어플리케이션(톰캣과 스프링부트)가 작동해야 하는 서버들에선 필수로 해야하는 설정들 입니다.
- Java 8 설치 : 현재 이 프로젝트의 버전은 Java 8 입니다.
- 타임존 변경 : 기본 서버의 시간은 미국 시간대 입니다. 한국 시간대가 되어야만 우리가 사용하는 시간잉 모두 한국 시간으로 등록되고 사용됩니다.
- 호스트네임 변경 : 현재 접속한 서버의 별명을 등록합니다. 실무에서는 한 대의 서버가 아닌 수십 대의 서버가 작동되는 데, IP만으로 어떤 서버가 어떤 역할을 하는지 알 수 없습니다. 이를 구분하기 위해 보통 호스트 네임을 필수로 등록합니다.
1. Java 8 설치
java 7버전이 설치가 되어 있지 않았으므로 java 8 설치 후 java 버전 매칭 확인
# Java 8 설치
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
# Java 매칭
sudo /usr/sbin/alternatives --config java
# 원치않는 Java7 삭제
sudo yum remove java-1.7.0-openjdk
# Java 버전확인
java -version
2. 타임존 변경
EC2 서버의 기본 타임존은 UTC입니다. 한국의 시간과는 9시간 차이가 발생합니다.(UTC +09:00) 이렇게 되면 서버에서 수행되는 Java 애플리케이션에서 생성되는 시간도 모두 9시간 씩 차이가 나기 때문에 꼭 수정해야 할 설정입니다.
ko.wikipedia.org/wiki/%ED%95%9C%EA%B5%AD_%ED%91%9C%EC%A4%80%EC%8B%9C
# root 계정으로 변경 후 진행
sudo su - root
# 폴더 삭제 후 심볼적 링크로 한국시간 연결
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# 타임존 확인
date
# config 타임존 변경
vim /etc/sysconfig/clock
# Asia/Seoul로 변경 후 :wq
ZONE="Asia/Seoul"
UTC=true
※ 파일 편집 시 ' E325: ATTENTION '발생 했을 경우
.swap 파일이 생겼기 때문입니다. vi파일 편집 중 비정상적으로 종료되었을 경우 스왑(.swap)파일이 생성됩니다.
# 스왑파일 존재 확인(스왑 파일은 숨김 파일)
ls -all
#다른 프로세스가 작업중인지 확인
ps -ef | grep /etc/sysconfig/clock
# 사용중인 프로세스가 있다면 kill -9(강제종료)
kill -9 PID Number
# 작업 중이 아니라면 복구
vi -r clodk
# 작업 완료 후 swap 파일 삭제
rm /etc/sysconfig/.clock.swap
3. Hostname 변경
아래의 AWS 설명서를 보고 진행하겠습니다.
docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html
# 퍼블릭 DNS 이름 등록을 위한 cloud-init 설정
sudo vi /etc/cloud/cloud.cfg
#preserve_hostname 설정이 나열되어 있지 않으면 파일 끝에 o입력 후 아래 텍스트 추가 후 저장(esc -> :wq)
preserve_hostname:true
# hostname 변경(hostnamectl 명령어 사용)
sudo hostnamectl set-hostname oss0202-springboot-webservice
# 인스턴스 재부팅
sudo reboot
저는 reboot 명령어 실행 시 Putty Fatal Error가 발생해서 AWS 콘솔에서 재부팅을 하였습니다.
※ reboot를 실행 중이라서 network connection이 끊긴것으로 추정됩니다.
- EC2 > 인스턴스 > 해당 인스턴스정보
※ 인스턴스 종료를 하면 안됩니다. 종료 => 인스턴스 삭제 입니다.
저는 스크립트 작업까지 완료 후 실수로 동료를 눌러서 인스턴스가 삭제되었습니다......
docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/terminating-instances.html
호스트 주소를 찾을 때 가장 먼저 검색해 보는 /etc/hosts에 변경한 hostname을 등록합니다.
- hostname이 /etc/host에 등록되지 않아서 발생한 장애 공유(우아한 형제들)
woowabros.github.io/experience/2017/01/20/billing-event.html
# /etc/host 파일 열기
sudo vim /etc/hosts
# hostname 등록 후 저장(:wq)
127.0.0.1 oss0202-springboot-webservice
# 정상등록 확인
curl oss0202-springboot-webservice
- 등록 실패인 경우
- 등록 성공인 경우
등록이 성공해도 failed가 나옵니다. 왜내하면 80포트로 실행된 서비스가 없기 때문입니다. 즉, curl 호스트 이름으로 실행은 잘 되었음을 의미합니다.
'스프링부트와 AWS로 구현하는 웹서비스' 카테고리의 다른 글
[스프링부트/AWS] 8장 EC2 서버에 프로젝트를 배포해보자 (0) | 2021.05.02 |
---|---|
[스프링부트/AWS] 7장 AWS에 데이터베이스 환경을 만들어보자 (RDS) (0) | 2021.05.02 |
[스프링부트/AWS] 5장 스프링 시큐리티와 OAuth 2.0으로 로그인 구현하기 (0) | 2021.04.11 |
[스프링부트/AWS] 4장 게시글 수정, 삭제 화면 만들기 3 (0) | 2021.04.04 |
[스프링부트/AWS] 4장 게시글 등록 화면 만들기 2 (0) | 2021.03.21 |