본문 바로가기
Clone Coding/스프링 부트와 AWS

[AWS EC2] 서버 환경 만들기

by 연로그 2021. 1. 22.
반응형

AWS에 가입이 되어있다는 가정 하에 진행한다.

https://aws.amazon.com/ko/에서 로그인한 뒤, 본격적으로 서버를 생성해보자.

 

인스턴스 생성하기

콘솔로 들어가서 지역을 서울로 바꿔준 뒤, EC2를 생성한다.

(EC2: AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버)

페이지 우측 상단
Amazon Linux 선택

 

t2.micro 선택

t2: 요금 타입, micro: 사양

 

3. 인스턴스 구성, 4. 스토리지 추가는 필수로 적어둘게 없어서 생략한다.

(자유롭게 설정하면 된다. 단, 무료 버전 사용 시 4에서 스토리지는 최대 30GB까지)

 

웹 콘솔에서 표기될 태그인 Name 태그를 등록했다.

태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있으며 EC2의 이름을 붙인다고 생각하면 된다.

 

SSH + 22 port

- AWS EC2에 터미널로 접속할 때. 

- pem 키가 없으면 접속이 안되니 전체 오픈(0.0.0.0/0, ::/0) 하는 경우가 많은데, 이는 pem 키가 노출되는 순간 해킹의 위험이 있다.

- pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전.

- 작업 장소가 바뀔때마다 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전.

 

8080 포트

- 현재 프로젝트의 기본 포트

- 전체 오픈 때문에 검토 화면에서 경고를 띄우지만 그다지 위험한 일이 아니니 괜찮다.

 

시작하기 버튼을 누르면 다음과 같은 화면이 뜬다

키 페어 다운로드를 누르면 pem 파일이 다운 받아진다.

이 파일이 마스터 키이 유출되거나 잃어버리지 않게 유의하자.

 

인스턴스 시작 버튼을 클릭하면 다음과 같은 화면이 뜬다.

 

이제 인스턴스 id를 클릭하면 EC2 목록으로 이동할 수 있게 된다.

아까 Name 태그를 설정한 덕에 그 값으로 노출되는 것을 확인할 수 있다.

 

인스턴스도 하나의 서버이기 때문에 IP가 존재하는데, 생성 시에 항상 새 IP를 생성한다.

문제는 같은 인스턴스를 중지하고 다시 시작해도 새 IP가 할당된다.

매번 ip 주소를 확인하기 번거로우니 고정 IP를 갖게 해보자.

 

고정 IP 할당

AWS의 고정 ip를 Elastic IP (탄력적 IP) 즉, EIP라고 부른다.

 

좌측 메뉴에서 탄력적 IP를 클릭한다.

별도의 설정 없이 바로 새 탄력적 IP 주소를 만들었다.

작업에서 탄력적 IP 주소 연결을 클릭한다.

 

탄력적 IP 주소를 연결 후에 인스턴스로 되돌아가서 잘 연결되었는지 확인해보자

좌측 메뉴 / 인스턴스 정보

주의할 점은, 탄력적 IP는 EC2 서버에 연결하지 않으면 비용이 나간다.

후에 인스턴스를 삭제할 때 비용 청구가 되지 않게 탄력적 IP를 꼭 삭제 해야한다.

 

EC2 서버에 접속하기

맥이나 리눅스 같은 경우에는 약간의 복잡한 명령어를 통해 바로 접속할 수 있지만 Windows 에서는 불편한 점이 많아 별도의 클라이언트를 설치한다.

 https://www.putty.org/ 에 접속해 실행 파일을 내려받는다.

 

putty.exe, puttygen.exe 두 가지 파일을 다운받으면 된다.

puttygen은 pem키를 putty가 사용할 수 있는 ppk 파일로 변환해주는 클라이언트다.

 

puttygen 실행

Conversions - Import key - 아까 다운 받았던 키 선택 - Save private key

ppk 파일이 잘 생성되었으면 putty를 실행한다.

Connection - SSH - Auth - ppk 파일

Session 탭으로 돌아와서 다음 정보를 입력한다.

순서대로

  입력 데이터 설명
HostName username@탄력적 IP 주소 우리가 생성한 Amazon Linux는 ec2-user가 username이다
Port 22 ssh 접속 포트
Connection type SSH  
Saved Sessions (자유) 현재 설정들을 저장할 이름

설정을 마치고 Save 버튼을 누른 뒤(설정 저장), Open 버튼을 누르면 다음 화면을 볼 수 있다.

(alert 창이 뜨면 Y 누르면 됨)

 

 

서버 설정

자바 기반의 웹 애플리케이션이 작동해야 하는 서버들에겐 필수로 해야하는 설정들이 있다.

- Java: 본 프로젝트에선 Java8 사용

- 타임존 변경: 기본 서버는 미국 시간. 한국 시ㄷ간으로 변경 필요

- 호스트네임 변경: 현재 접속한 서버의 별명 등록. 

 ( 실무에서는 수십 대의 서버가 작동되므로 IP가 아닌 호스트네임으로 서버를 구분한다. )

 

Java 설치

$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
$ java -version

자바 버전을 확인해보고 7로 설정 되어있으면 아래 명령어도 입력한다.

$ sudo /usr/sbin/alternatives --config java
$ sudo yum remove java-1.7.0-openjdk

 

타임존 변경

EC2 서버의 기본 타임존은 UTC다. 한국(KST)과는 9시간 차이가 난다.

$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
$ date

 

hostname 변경

방법1

$ sudo vim /etc/sysconfig/network

파일이 열리면 a를 통해 입력모드로 전환하고,

HOSTNNAME=변경할 이름을 입력한 뒤 esc를 통해 명령모드로 전환한다.

:wq!를 통해 저장하고 종료하면 된다.

 

방법2

$ sudo hostnamectl set-hostname 변경할이름

 

hostname을 변경한 후에는 서버를 리부트 시켜줘야 한다.

'sudo reboot' 명령어를 통해 리부트하면 되지만 이상하게 나는 이 명령어가 먹히지 않아 껐다 키는 방법을 택했다.

기존과 달리 주소가 바뀐 hostname으로 보인다.

hostname이 무사히 등록되었다면 다음 명령어도 실행하자.

$ sudo vim /etc/hosts

마찬가지로 입력모드 전환 (a)

127.0.0.1 등록한hostname 내용 추가

명령모드 전환(esc) 및 저장 (:wq)

$ curl 등록한hostname

 

( curl이란? command line 기반의 웹 요청 도구. http/https/ftp 등 핵심 프로토콜 지원. )

위 명령어를 통해 주소가 잘 등록되었는지 확인할 수 있다.

등록되지 않았을 경우 Could not resolve host: hostname 에러가 뜨고

등록되었을 경우 Failed to connect to hostname port 80: Connection refused 에러가 뜰 것이다.

 

전자는 찾을 수 없는 주소, 후자는 80포트로 실행된 서비스가 없음을 의미한다.

이제 EC2 설정이 끝났다.

 


해당 게시글은 [ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.

 

참고

docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html

helloitstory.tistory.com/307

반응형