🌱 이번 장의 스터디 범위
- AWS와 클라우드 서비스란?
- AWS의 관리형 가상 서버인 EC2 서비스 소개와 생성 방법
- EC2 인스턴스의 IP를 고정해주는 탄력적 IP에 대한 소개와 설정 방법
- EC2 인스턴스 접근을 위한 pem 키 사용 방법
- 리눅스 서버 생성 시 해야 할 설정들
🌱 AWS와 클라우드 서비스란?
- 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수
- 24시간 작동하는 서버 - 집에서 PC를 24시간 구동, 호스팅 서비스 이용, 클라우드 서비스 이용
- 일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하나,
- 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리
- 클라우드 서비스란 인터넷 (클라우드)를 통해 서버 ,스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것
- 예를 들어 AWS의 EC2는 서버 장비를 대여하는 것이지만, 실제로는 그안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원
- 즉 개발자가 직접 해야 할 일을 AWS가 전부 지원하는 것
- 클라우드에는 IaaS, PaaS, SaaS의 형태가 있음
- 이 책에서 진행하는 모든 AWS 서비스는 프리티어로 무중단 배포를 하기 위해 IaaS를 사용
🌱 AWS 회원 가입
- AWS 공식 사이트로 이동한 뒤 무료 계정 만들기 선택 (https://aws.amazon.com/ko/)
- AWS 계정 정보 등록
- 연락처 정보의 경우 개인으로 가입
- 결제 정보 등록
- 자격 증명 확인
- Support 플랜 선택 : 기본 지원 - 무료
- 콘솔 로그인
🌱 EC2 인스턴스 생성하기
- EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
- 리전 확인 : 서울
1. EC2
2. 인스턴스 시작
3. AMI (아마존 머신 이미지) 선택 : EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것
4. 인스턴스 유형 : t2.micro 선택 : t2는 요금 타입, micro는 사양을 이야기 → CPU 크레딧을 축적, 사용
5. 인스턴스 세부 정보 구성
6. 스토리지 추가 : 서버의 용량을 정함 ≒ 하드디스크 → 30GB로 변경
7. 태그 추가 : 웹 콘솔에 표기될 태그인 Name 태그를 등록 즉, EC2의 이름 → Name - freelec-springboot2-webservice
8. 보안 그룹 구성 : 방화벽을 의미, 보안 그룹 이름엔 유의미한 이름으로 변경
- SSH이면서 포트 항목이 22인 경우는 AWS EC2에 터미널로 접속할 때를 이야기
- 이는 pem 키가 없으면 접속이 안 되지만 pem 키가 노출되는 순간 위험함
- 그러므로 높은 보안을 위해 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전
- 그리고 현재 프로젝트의 기본 포트인 8080을 추가
9. 검토 및 시작
10. 시작하기
11. 새 키 페어 생성 및 키 페어 다운로드 : freelec-springboot-webservice
- 인스턴스를 접근하기 위해서는 pem 키 (비밀키)가 필요하므로 인스턴스 마지막 단계는 할당할 pem 키를 선택
- 인스턴스는 지정된 pem 키와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않음
- 일종의 마스터키이기 때문에 절대 유출해서는 안되며 잘 관리할 수 있는 디렉토리에 저장 필요
12. 인스턴스 시작
13. 인스턴스 id를 클릭하여 EC2 목록으로 이동
- IP와 도메인이 할당된 것을 확인 가능
- 인스턴스도 결국 하나의 서버이기 때문에 IP가 존재하며, 인스턴스 생성 및 재시작 시 항상 새 IP를 할당
- 다시 시작 시 IP가 변경되면 매우 번거로므로 매번 변경되지 않고 고정 IP를 가지게 할당해주어야 함
14. EIP (Elastic IP, 탄력적 IP) 할당 : 새 주소 할당이 완료되면 탄력적 IP가 발급
15. 탄력적 IP와 EC2 주소를 연결 : [작업] - [주소 연결] - [인스턴스]
16. 인스턴스 목록에서 해당 인스턴스의 퍼블릭, 탄력적 IP가 모두 잘 연결되었는지 확인
+) 탄력적 IP는 생성 후 EC2 서버에 연결하지 않으면 비용이 발생하므로 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 함
만약 더는 사용할 인스턴스가 없을 때는 탄력적 IP를 삭제해야 함
🌱 EC2 서버에 접속하기 (윈도우의 경우)
1. putty 사이트에서 putty.exe, puttygen.exe 실행 파일 다운
2. puttygen.exe 파일 실행
3. putty는 pem 키로 사용이 안 되며 pem 키를 ppk 파일로 변환해야 하므로 이 때 puttygen 클라이언트 사용
4. [Conversions] - [Import Key] - 내려받은 pem 키 선택하여 자동 변환 - [Save private key] - [예]
5. putty.exe 파일 실행
6. 각 항목 등록
- HostName : ex2-user@탄력적 IP 주소
- Port : ssh 접속 포트인 22 등록
- Connection type : SSH 선택
7. [Connection] - [SSH] - [Auth] - [Browse...] - ppk 파일 선택 - [Session] - [Saved Sessions]에 현재 설정 이름 저장 - [Save]
8. 저장 후 [open] 버튼을 클릭해 SSH 접속 알림이 등장하여 [예] 클릭하여 SSH 접속 성공 확인
🌱 아마존 리눅스 1 서버 생성 시 꼭 해야 할 설정들
- Java 8 설치
- 타임존 변경 : 한국 시간대로 등록
- 호스트네임 변경 : 현재 접속한 서버의 별명을 등록, 어떤 서버가 어떤 역할을 하는지 알기 위해서
1. EC2에 자바 8 설치
// EC2에서 다음 명령어 실행
// 자바 8 설치
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
// 인스턴스의 Java 버전을 8로 변경
sudo /usr/sbin/alternatives --config java
// Java 8 선택
// Java7 삭제
sudo yum remove java-1.7.0-openjdk
// 현재 버전 확인
java -version
2. 타임존 변경 : UTC → KST
// 타임존 변경
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
// 타입존 확인
date
3. Hostname 변경 : 각 서버가 어떤 서비스인지 표현하기 위해 HOSTNAME을 변경
// hostnamectl 명령으로 호스트 이름을 설정하여 시스템 호스트 이름을 반영
sudo hostnamectl set-hostname freelect-springboot2-webservice.localdomain
// 인스턴스를 재부팅하여 새 호스트 이름을 적용
sudo reboot
// 인스턴스에 로그인하고 호스트 이름이 업데이트되었는지 확인
hostname
// 호스트 주소를 찾을 때 가장 먼저 검색해 보는 /etc/hosts에 변경한 hostname을 등록
sudo vim /etc/hosts
// 방금 등록한 HOSTNAME을 등록
127.0.0.1 freelect-springboot2-webservice
// :wq 명령어로 저장하고 종료한 뒤 정상적으로 등록되었는지 확인
curl freelect-springboot2-webservice
'Java-Spring > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
[Spring Boot] 08장. EC2 서버에 프로젝트를 배포해 보자 (0) | 2021.11.09 |
---|---|
[Spring Boot] 07장. AWS에 데이터베이스 환경을 만들어보자 - AWS RDS (0) | 2021.11.06 |
[Spring Boot] 05장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - 기존 테스트에 시큐리티 적용하기 (0) | 2021.10.31 |
[Spring Boot] 05장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - 네이버 로그인 (0) | 2021.10.31 |
[Spring Boot] 05장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - 세션 저장소로 데이터베이스 사용하기 (0) | 2021.10.30 |