AWS EC2 서버 구축하는 프로세스와 관련 개념을 정리해보자
관련 개념
EC2 = 가상 서버
- EC2(Elastic Computed Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
ex. AWS에서 리눅스 서버 혹은 윈도우 서버를 사용합니다 = EC2를 사용합니다.
- EC2를 사용하면 서버, OS, 소프트웨어 등을 세트로 사용할 수 있음
- 다양한 사양이 준비되어 있고 t2.micro는 프리티어 사용이 가능함
인스턴스 = 가상 머신
- AWS EC2 서버는 인스턴스로 생성
- 인스턴스란 '실체'라는 의미이며 실제 가동되고 있는 가상화 컴퓨터를 말함
- '서버' 라고 하면 위의 실체와 물리적 서버를 통틀어 이야기하는 것
- '인스턴스'는 서버로 가동되고 있는 가상 머신를 말함
리전 = 서비스 지역
- AWS 서비스가 구동될 지역
- AWS는 도시별로 클라우드 센터를 지어 해당 센터에 구축된 가상머신들을 사용할 수 있게 함
- 국내 서비스의 경우 서울 리전을 선택하면 됨
AMI = 기본 설정 정보
- AMI(Amazon Machine Image)는 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것
- 인스턴스라는 가상 머신에 OS 등을 설치할 수 있게 밀어넣는 기본 설정 정보
- EC2 인스턴스 생성 시 자신이 필요한 설정을 고려하여 이미지를 선택하면 OS, 아키텍처 타입, 저장공간 용량 등 기본 설정이 끝난 상태의 서버를 만들 수 있음
VPC = 가상 네트워크
(이 포스팅에 이미지와 함께 잘 정리되어있음. 아래는 이해한 바를 요약함)
VPN(Virtual Private Network, 가상사설망)
- 같은 네트워크 상에 있는 두 네트워크를 논리적으로 다른 네트워크인 것처럼 동작하는 것
VPC(Virtual Private Cloud)
- VPC는 VPN처럼 같은 네트워크 상에 있는 것들을 다른 네트워크인 것처럼 동작하게 함
- VPC가 없다면, EC2 인스턴스들이 서로 복잡하게 연결됨
- 이런 구조는 시스템 복잡도를 높이고, 하나의 인스턴스만 추가되어도 모든 인스턴스를 수정해주어야 함
- VPC를 적용하면, 모든 인스턴스가 서로 연결될 필요 없이 각 VPC별로 네트워크를 구성, VPC별로 다른 네트워크 설정이 가능함
- 각각의 VPC는 독립된 네트워크처럼 작동하기 때문에 어떤 하나에서 변경사항이 생겨도 다른 것에 영향을 주지 않음
서브넷 = 분할된 작은 네트워크
- 하나의 네트워크를 분할하는 것 = 서브네팅
- 분할되어 나눠진 작은 네트워크 = 서브넷
- 네트워크를 운영중인 서비스 규모에 맞게 분할하여 낭비되는 IP 자원을 최소화하기 위함
- VPC를 잘게 쪼개어 개별 네트워크를 만들어 사용
- 서브넷 안에 EC2, RDS 등 리소스를 위치시킴
보안 그룹 = 방화벽
- 보안그룹 규칙을 통해 EC2 인스턴스로 들어오고 나가는 트래픽을 제어함
ex. SSH 접속 포트인 22번 포트는 개발자 PC만 접속 가능하도록 허용하고, 서비스 포트인 80 포트는 모두에게 허용할 수 있도록 설정 가능
- 인바운드 : 외부 -> 인스턴스 요청
- 아웃바운드 : 인스턴스 -> 외부 요청 (디폴트로 모두 허용)
탄력적 IP = 고정 IP
- 탄력적 IP = Elastic IP, EIP
- AWS 인스턴스 생성 시에 항상 새 IP를 할당함
- 같은 인스턴스를 중지했다가 다시 실행할 때에도 새 IP가 할당됨
- 중지했다가 켤 때마다 IP가 바뀌어서 접속할 때마다 IP 주소를 확인해야함
- 이런 문제가 없도록 고정 IP를 할당 = AWS의 고정 IP가 EIP
- 탄력적 IP를 EC2에 연결하지 않으면 비용 발생함, 만들면 바로 연결!
프로세스
1. AWS EC2 인스턴스 생성
2. 탄력적 IP 생성 및 인스턴스와 연결
3. 서버 접속 후 셋팅
- 타임존 변경
: 기본은 미국 시간이기 때문에 한국 시간으로 변경
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date
- Hostname 변경 (참고)
: 기본은 IP만 노출, IP만으로 어떤 서비스의 서버인지 구분할 수 없어서 Hostname 지정
sudo hostnamectl set-hostname 원하는호스트명
sudo vim /etc/hosts
hostname
curl 호스트명
sudo yum install git
git --version
git clone 주소
ll
- 파이썬 설치
- 내가 파이썬을 쓸 거라서 파이썬 설치, 자바 쓸 거면 자바, JDK 설치하면 됨
-
ubuntu 18.04부터는 python3이 기본으로 구성되어있다고 함 (python2 설치가 필요하다면 여기로)
-
pip3은 따로 설치해야 함
sudo apt-get install python3-pip
python3 --version
pip3 --version
sudo yum pip3 install --upgrade pip
-
그 외 필요한 패키지 설치
pip3 install 설치할패키지명
pip3 list
pip3 install -r requirements.txt