Today I Learned
3. 백엔드 구성해보기
1. EC2
EC2는 AWS의 가장 기본적인 서비스에요. 하나의 서버 컴퓨터라고 보시면 되고, 서버 컴퓨터를 하나 빌려서 프로그램들을 설치하고 사용하시면 됩니다.
지난번에도 다뤄보았던 EC2이다. 조금 더 자세히 공부해보자. Amazon Elastic Compute Cloud(Amazon EC2)... 아마존은 이런 네이밍을 좋아하나 보다. E가 하나 C가 두개라 EC2
EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스이다. 서버를 구축할 때 하드웨어에 선투자할 필요가 없기 때문에 빠르게 개발 후 배포할 수 있고, 유동적으로 서버의 수와 비용을 조절 할 수 있다. EC2를 사용하여 본인 서비스의 트래픽에 따라 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있다.
2. EC2의 기능
물론 다 알 필요는 없지만, 나중에 필요할 때 찾아보기 위해 정리해두자.
- 인스턴스: 가상 컴퓨팅 환경
- Amazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있다. (도커 이미지와 비슷)
- 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공, 내가 원하는 성능을 필요한 만큼 빌릴 수 있다.
- 키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식)
- 인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
- Amazon Elastic Block Store(Amazon EBS), 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터 저장
- 인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스할 수 있는 리전 및 가용 영역
- 보안 그룹을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능
- 탄력적 IP 주소(EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소
- 태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터
- AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 Virtual Private Clouds(VPC)
3. 사용법
EC2 접속 > 인스턴스 시작
- AMI 선택 - 원하는 AMI 선택, ubuntu를 가장 많이 쓰며, 18.04LTS 선택
- 인스턴스 유형 선택 - 성능에 따라 과금 다름, 프리티어 선택
- 인스턴스 구성
- 스토리지 추가
- 태그 추가
- 보안 그룹 구성 - 포트와 소스 등 지정, 지금은 22번 포트로 들어오는 모든 대역대를 허용
- 검토 - 시작하기 클릭
- 키페어 선택 및 생성 - 웬만하면 키페어를 다운로드 받아 사용
이제 발급받은 SSH를 이용하여 인스턴스에 접속 할 수 있다.
mac인 경우
$ sudo chmod 400 받은키페어를끌어다놓기 # 권한 설정
$ ssh -i 받은키페어를끌어다놓기 ubuntu@퍼블릭 IPv4 주소
$ yes
windows인 경우
$ ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
$ yes
간단한 리눅스 명령어
$ ls # 내 위치의 모든 파일을 보여준다.
$ pwd # 내 위치(폴더의 경로)를 알려준다.
$ mkdir # 내 위치 아래에 폴더를 하나 만든다.
$ cd [갈 곳] # 나를 [갈 곳] 폴더로 이동시킨다.
$ cd .. # 나를 상위 폴더로 이동시킨다.
$ cp -r [복사할 것] [붙여넣기 할 것] # 복사 붙여넣기
$ rm -rf [지울 것] # 강제로 지우기. 이 명령어로 지우면 복구가 안되니 주의
$ sudo [실행 할 명령어] # 명령어를 관리자 권한으로 실행한다.
$ sudo su # 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
python 이라는 명령어로 3 버전 이상을 실행하도록 하는 명령어
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
리눅스 패키지 설치
# pip3 설치
$ sudo apt-get update
$ sudo apt-get install -y python3-pip
# 버전 확인
$ pip3 --version
# pip3 대신 pip 라고 입력하기 위한 명령어
# 아래 명령어를 입력하면 pip 라고 쳐도 pip3를 작동시킬 수 있다.
$ sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# 파이썬 개발에 필요한 라이브러리 설치
$ pip install flask boto3 flask-cors
git 연동
$ git --version
$ git clone https://github.com/Lukaid/lukaid-aws.git # 본인 repo주소
이제 EC2에서 내 서버를 돌릴 수 있는데 그 전에 몇가지 설정을 해줘야 한다. 우선 인스턴스 보안 설정하기다.
AWS에서 자신의 인스턴스로 접속 > 보안 > 보안 그룹 > Edit inbound rules > 규칙 추가 후 사용자 지정 TCP, 5000번 포트 > 규칙 저장
이전에 구매했던 가비아 도메인 새로 연결해보자. 탄력적 IP를 지정하면 IP가 고정이라고 하는데... 그럼 과금이 된다고 한다... (흙수저의 눈물)
가비아 접속 > my가비아 > DNS관리툴 > DNS수정 > EC2의 퍼블릭 IPv4 주소 입력 > 잠시 대기 > 가비아에서 발급받은 주소로 접속
근데 Linux shell을 닫으면 연결이 끊어지면서 서버가 종료된다. 이를 방지하기 위해 백그라운드 실행을 해주자.
$ nohup python app.py &
이제 shell을 종료해도 인스턴스가 종료되지 않는다.
'Sparta' 카테고리의 다른 글
[Sparta] 16. ElasticBeanstalk (0) | 2021.10.07 |
---|---|
[Sparta] 15-4. EC2 & ELB (0) | 2021.10.07 |
[Sparta] 15-2. 네트워크 (0) | 2021.10.07 |
[Sparta] 15-1. GitHub Actions (0) | 2021.10.07 |
[Sparta] 14-4 AWS_CloudFront (0) | 2021.10.05 |