개발자의 서재

Chapter.06 : AWS 서버 환경을 만들어보자 - AWS EC2 본문

SpringBootProject/SpringBoot_ Oauth_AWS

Chapter.06 : AWS 서버 환경을 만들어보자 - AWS EC2

ironmask431 2022. 2. 19. 00:03

"스프링부트와 AWS로 혼자 구현하는 웹 서비스" 라는 책을 바탕으로 학습목적의 프로젝트를 진행하고 있습니다. 

 

소스 : https://github.com/ironmask431/springboot_aws_01

Chapter.06 : AWS 서버 환경을 만들어보자 - AWS EC2

클라우드 서비스 : 클라우드(인터넷)을 통해 서버, 스토리지(파일저장소), 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것.  AWS EC2 는 단순히 서버 장비를 대여하는 것 뿐만 아니라,

로그관리, 모니터링, 하드웨어 교체, 네트워크 관리등을 기본적으로 제공함.

 

클라우드의 형태 

1. IaaS (Infrastructure as a Service)

  - 기존 물리장비를 미들웨어와 함께 묶어둔 추상화 서비스 

  - 가상머신, 스토리지, 네트워크 ,운영체제 등의 it인프라를 대여해주는 서빗

  - AWS EC2, S3 등

 

2. PaaS (Platform as a Service)

  - IaaS에서 한번 더 추상화 한 서비스

  - 많은 기능이 더 자동화 됨. 

  - AWS의 Beanstalk(빈스톡), Heroku(헤로쿠) 등

 

3. SaaS (Software as a Service)

  - 소프트웨어 서비스

  - 구글 드라이브, 드랍박스, 와탭 등

 

여기서는 여러 클라우드 서비스중 (AWS, Azure, GCP 등) 중 AWS를 선택함. 

이유는 국내기업에서는 AWS의 점유율이 압도적임. 쿠팡, 우아한형제들, 리멤버등 AWS 사용중. 

그리고 IaaS 사용예정인데 이유는  PaaS 빈스톡을 사용하면 작업이 간소화 되지만,

프리티어로 무중단 배포가 불가능함. 

그리고 IaaS로 직접 다뤄보는것이 익히는데 더 도움이 됨. 

6.1 AWS 회원가입 

AWS가입 필수 준비물 : Master or Visa 카드 

AWS 공식사이트 > 무료계정 만들기 

절차에 따라서 회원가입 진행. > 회원가입 완료,  로그인 완료

 

6.2 EC2 인스턴스 생성하기 

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

보통 AWS에서 리눅스, 윈도우 서버를 사용하는 경우는 EC2를 사용하는 것이다. 

AWS에서 무료로 제공하는 프리티어 플랜에서 EC2는 다음과 같은 제한이 있다. 

1. 사양이 t2,micro 만 가능합니다. 

2.월 750시간의 제한이 있습니다. 초과시 비용부과 (1대의 t2.micro만 쓰면 24시간 가능)

 

 

AWS로그인 후 우측상단에 리전을 "서울" 로 변경 

(리전이랑 AWS 서비스가 구동될 지역을 의미)

 

검색창에서 E2 검색 그리고 EC2 선택
인스턴스 시작 클릭

단계1. AMI 선택 

AMI는 EC2 인스턴스 시작하는데 필요한 정보를 이미지로 만들어 둔것. 

 

AMI 선택 - Amazon Linux 2 선택

단계2. 인스턴스 유형 선택 

t2는 요금타입을 의미하고 micro는 사양을 의미함.

 

인스턴스 유형선택 : t2.micro 선택

단계3.인스턴스 세부정보 구성

 

별다른 설정없이 넘어감.

단계4. 스토리지 추가 

스토리지는 서버의 용량 설정. 30GB까지 프리티어로 가능함. 그이상은 별도 비용청구됨.

 

스토리지 30 GB로 설정하기 

단계5. 태그 추가 

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

여러 인스턴스가 있을 경우 태그별로 구분하면 편하므로, 해당 서비스나 인스턴스를 나타낼 수 있는 값으로 설정.

 

단계6. 보안 그룹 구성

보안그룹은 "방화벽"을 의미함. 보안그룹 이름 설정,  SSH는 내IP로 설정함. (내IP로 설정 시 현재 내PC IP로 자동설정됨.)

(SSH 터미널로 접속하기 위해서는 "PEM키"가 별도로 필요함.)

그리고 현재 작업중인 프로젝트의 기본포트인 8080, http 기본포트 80, https 기본포트인 443도 추가

0.0.0.0,::/0 은 전체오픈임.

 

단계7. 인스턴스 시작검토

인스턴스 설정값 다시 확인함. 

 

단계8. pem키 생성 (비밀키)

인스턴스로 접근이 가능한 비밀키 생성. 인스턴스는 지정된 비밀키와 매칭되는 공개키를 가지고 있어, 

해당 pem키 외에는 접근 불가함. 일종의 마스터키 이므로 절대 유출되면 안됨. 

 

단계9. 인스턴스 목록에서 인스턴스 생성된 것을 확인 > ip, 도메인 할당된것도 확인. 

 

단계 10. 탄력적 ip 설정 

인스턴스를 중지후 재시작시 항상 새 ip가 할당됨. 

그래서 재시작시에도 ip가 변경되지 않는 고정 ip를 할당하기위해서  탄력적 ip를 설정함. (EIP)

 

탄력적IP 주소 연결 후 인스턴스 정보화면에서 탄력IP 할당된 것 확인

(* 탄력적IP는 생성 후 EC2 서버에 연결하지않으면 비용발생함. 꼭 연결해줘야함.)

 

EC2 인스턴스 생성 완료

 

6.3 EC2 서버에 ssh 접속하기

putty 사이트에 접속하여 2가지 파일을 다운받는다.

putty.exe
puttygen.exe

1. puttygen.exe 파일실행, ppk 파일 생성 

putty는 pem키로 사용이 안되며, pem키를 ppk파일로 변환해야 합니다. puttygen은 이 변환을 진행해줍니다. 

상단 Conversions > import key 선택 후 다운받았던 pem키를 선택.

 

 Conversions > import key  클릭 
다운받았던 pem키
Save private key 클릭
ppk파일 생성확인.

2. putty 실행

HostName : username@public_ip를 등록합니다. 

위에서 선택한 AIM인 Amazon Linux는 ec2-user가 username 이므로 

ec2-user@위에서확인한 탄력적ip  < 로 등록합니다. 

Port : ssh 접속포트인 22 선택 (자동)

Connection Type : ssh 선택

 

&amp;amp;amp;amp;amp;amp;amp;nbsp;Host/Name 입력
Connection &amp;amp;amp;amp;amp;amp;amp;gt; SSH &amp;amp;amp;amp;amp;amp;amp;gt; Auth &amp;amp;amp;amp;amp;amp;amp;gt; Browse 클릭
생성한 ppk 파일 선택
session 으로 돌아와서 SaveSession 에 이름을 넣고 Save
등록된 세션명 선택후 open 하면 정상적으로 접속 성공
AWS EC2 LINUX2 배포판 확인 (CentOS 이다.)

 

 

6.4 아마존 리눅스 서버 생성 시 꼭 해야하는 설정들.

* java 설치 : 서버에서 java application 을 실행하기 위해 설치 

* 타임존 변경 : 기본서버의 시간은 미국 시간대이므로, 한국시간대로 변경

* 호스트네임 변경 : 현재 접속한 서버의 별명을 등록함. ip만으로는 서버구분이 어려움으로 등록해줌.

 

1.자바 설치

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

java 1.8 설치완료

sudo /usr/sbin/alternatives --config java

자바 버전 선택 > 1. (java-1.8.0 ... )

선택 후 자바 버전 확인

java -version

java 1.8 설치 확인

2. 타임존 변경

 

date로 확인 시 미국시간으로 되어 있음

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

명령어 수행 후 date 시 한국시간으로 변경된 것 확인

3. HoseName 변경

sudo hostnamectl set-hostname --static 변경할 호스트명

* HostName 변경은 책에 있는 내용으로 안되서 구글링으로 다르게 적용함.

 

입력 후 putty 재실행 

 

표시되는 hostname이 변경된 것 확인

sudo vim /etc/hosts
127.0.0.1 호스트명  > 입력후 저장

호스트명 입력

curl 등록한 호스트명

80포트로 접속 불가하다는 명령어 나오면 정상. (아직 80포트에 실행중인 서비스가 없으므로)

EC2 기본 설정 완료

Comments