개발자의 서재
Chapter.06 : AWS 서버 환경을 만들어보자 - AWS EC2 본문
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 서비스가 구동될 지역을 의미)
단계1. AMI 선택
AMI는 EC2 인스턴스 시작하는데 필요한 정보를 이미지로 만들어 둔것.
단계2. 인스턴스 유형 선택
t2는 요금타입을 의미하고 micro는 사양을 의미함.
단계3.인스턴스 세부정보 구성
단계4. 스토리지 추가
스토리지는 서버의 용량 설정. 30GB까지 프리티어로 가능함. 그이상은 별도 비용청구됨.
단계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키를 선택.
2. putty 실행
HostName : username@public_ip를 등록합니다.
위에서 선택한 AIM인 Amazon Linux는 ec2-user가 username 이므로
ec2-user@위에서확인한 탄력적ip < 로 등록합니다.
Port : ssh 접속포트인 22 선택 (자동)
Connection Type : ssh 선택
6.4 아마존 리눅스 서버 생성 시 꼭 해야하는 설정들.
* java 설치 : 서버에서 java application 을 실행하기 위해 설치
* 타임존 변경 : 기본서버의 시간은 미국 시간대이므로, 한국시간대로 변경
* 호스트네임 변경 : 현재 접속한 서버의 별명을 등록함. ip만으로는 서버구분이 어려움으로 등록해줌.
1.자바 설치
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
sudo /usr/sbin/alternatives --config java
자바 버전 선택 > 1. (java-1.8.0 ... )
선택 후 자바 버전 확인
java -version
2. 타임존 변경
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
3. HoseName 변경
sudo hostnamectl set-hostname --static 변경할 호스트명
* HostName 변경은 책에 있는 내용으로 안되서 구글링으로 다르게 적용함.
입력 후 putty 재실행
sudo vim /etc/hosts
127.0.0.1 호스트명 > 입력후 저장
curl 등록한 호스트명
EC2 기본 설정 완료
'SpringBootProject > SpringBoot_ Oauth_AWS' 카테고리의 다른 글
Chapter.08-1 : AWS EC2 서버에 프로젝트를 배포해 보자(git pull, 배포 스크립트 만들기) (0) | 2022.02.27 |
---|---|
Chapter.07 : AWS에 DB환경을 만들어보자 - AWS RDS (0) | 2022.02.25 |
Chapter.05-2 : 스프링 시큐리티와 OAuth 2.0 으로 로그인 구현하기(코드 개선 + 테스트) (0) | 2022.02.18 |
Chapter.05-1 : 스프링 시큐리티와 OAuth 2.0 으로 로그인 구현하기 (0) | 2022.02.11 |
Chapter.04 : 머스테치로 게시판 화면 구성하기 (0) | 2022.02.11 |