TIL - AWS - EC2, RDS

김영훈·2021년 5월 8일
0

ETC

목록 보기
13/34

# AWS란

  • aws의 개념

    AWS는 Amazon Web Service의 줄임말입니다. AWS는 소위 클라우드 서비스라고도 합니다. 클라우드 서비스는 서버 등의 인프라스트럭쳐를 필요한대로 on demand로 사용할 수 있는 서비스 입니다. 즉, 유저가 직접 서버를 구입하고 설치할 필요 없이 AWS상에서 클릭 몇번으로 서버구축하고 사용할 수 있습니다.

  • aws의 다양한 기능

    • EC2
    • Security Group
    • RDS
    • Load Balancer (ALB)
    • Route 53
    • S3
  • EC2

    • Elastic Compute Cloud
    • AWS 상에서 사용하는 Server. EC2 서버에 API배포하게 된다.
    • EC2는 다양한 사양 옵션을 제공한다. t2.nano (CPU 1, 0.5 GB memory) 부터 x1.32xlarge (CPI 128, 1952 GB) 까지 다양하게 제공함으로 필요한 사양의 EC2 인스턴스(instnace)를 선택해서 사용하면 된다. (물론 사양이 좋을 수록 비싸다)
  • RDS(Relational Database Service)

    • AWS의 database 서비스
    • RDS를 사용하면 사용자가 직접 서버를 생성해서 데이터 베이스를 설치하고 설정하고 관리 하지 않아도 된다.
    • 그러면서 동시에 비용도 더 저렴하다. 사용자가 직접 데이터 베이스를 설치하고 운영하는 것보다 RDS를 사용하는것이 더 저렴함. 즉, RDS를 사용 하지 않을 이유가 거의 없다.

# EC2 인스턴스 접속하기

  • 인스턴스 생성하기

    • AWS region 활성화

      • "오하이오"로 설정
    • 시작

      • 로그인 —> EC2 —> "인스턴스 시작" 클릭
    • AMI(Amazon Machine Image) 선택

      • Ubuntu Server 20.04 LTS 64비트
    • 인스턴스 유형

      • t2.micro
    • 인스턴스 구성

      • 서브넷 설정(기본값 us-east-2?)
      • 종료방식 설정(중지)
      • 종료방지기능활성화 목록 체크
      • 추가 요금을 발생하는 목록은 가급적 체크X
    • 스토리지 추가

      • 특별히 설정할 필요X. 기본 설정을 유지한 채 넘어가자.
    • 태그 추가

      • KEY: 계정 이름
      • VALUE: 프로젝트 이름
    • 보안 그룹 구성

      • "규칙 추가" 클릭
      • 포트 범위: 8000
      • 소스: 위치 무관
    • 검토

      • "시작하기" 클릭
      • 기존 사용자는 "기존 키 페어 선택"을, 신규 사용자는 "새 키 페어 생성"을 선택한다.
      • 신규 사용자는 키 페어를 다운로드하여 폴더에 저장해야 함
      • "시작하기" 클릭
    • 실행

      • 터미널을 켠 뒤, 키 페어가 다운로드된 폴더로 이동
      • AWS의 EC2에 ssh를 이용해 접속하려면 키 페어 파일에 대한 권한 설정을 바꿔야 한다.
        • chmod 400 [키 페어 파일 이름]
      • ssh -i [키 페어] ubuntu@IPv4 퍼블릭 IP —> yes —> EC2가 시작된다.
        • ubuntu@ : 인스턴스에서 사용되는 machine이 ubuntu이기 때문에 입력되는 명령어

# RDS 생성하기

  • 파라미터 그룹 생성

    • 파라미터 그룹: mysql5.7
    • 그룹 이름: 프로젝트명-config
    • 설명: 프로젝트명-config
  • 파라미터 편집

    • 데이터베이스에서 한글이 표시될 때 깨지는 현상을 방지하기 위해 파라미터 편집이 필요함
    • “character_set”으로 검색 —> 값을 모두 utf8mb4로 변경 —> 변경사항 저장
    • “collat”으로 검색
      • connection : utf8mb4_general_ci로 설정
      • server : utf8mb4_unicode_ci로 설정
  • 데이터베이스 생성하기

    • 생성 방식: 표준 생성

    • 엔진 옵션: MySQL

    • 버전 선택: MySQL 5.7.26

    • 템플릿: 프리 티어

    • DB인스턴스 식별자: [프로젝트 이름]-database

    • 마스터 사용자 이름: root

    • 암호 설정하기

    • 스토리지 자동 조절 활성화: 체크 해제

    • "연결" 부분의 퍼블릭 엑세스 기능:

    • VPC 보안 그룹: 새로 생성

    • 보안 그룹 이름: [프로젝트 이름]_rules

    • 가용 영역: EC2의 가용 영역 설정과 일치시키기

    • 추가 구성: 초기 데이터베이스 이름 설정(로컬 데이터베이스 이름과 동일하게 설정하거나, 데이터베이스 생성을 원하지 않으면 입력하지 않아도 된다.)

    • DB 파라미터 그룹 설정: 기존에 생성했던 파라미터 그룹 선택

    • 자동 백업 활성화: 체크 해제

    • 삭제 방지 활성화: 체크

    • 데이터 베이스 생성 —> 생성이 완료되면 앤드포인트가 생겨남

  • 보안 그룹 규칙 바꾸기

    • 엔드 포인트 하단 보안 그룹 규칙 목록에서 “인바운드 보안 그룹” 클릭 —> 하단으로 스크롤 내려서 인바운드 항목 선택 —> 편집 —> 소스 항목을 “사용자 지정”에서 “위치 무관”으로 바꿈 —> 이제 전세계 어디서든 계정정보와 비밀번호만 알면 들어올 수 있다. —> 권장하지 않으므로 작업이 끝나면 설정을 "내 IP"로 바꾸는 것이 좋다. ex) [IPv4 퍼블릭 IP]/0
  • RDS 실행

    • 실행 명령어: mysql -h 앤드포인트 -u root -p
    • 데이터 덤프 뜨기
      • 데이터 import: mysql -h [RDS 엔드포인트] -u root -p db 데이터를 import할 데이터베이스명 < db파일명

# EC2 RDS 연동하기

  • EC2 서버 접속하기

    • 키 페어가 저장된 폴더로 이동 —> ssh -i [키 페어] ubuntu@IPv4 퍼블릭 IP
  • 환경 설정

    • miniconda 설치

      • miniconda 링크 복사(miniconda 사이트에 접속하여 Linux installers의 python3.8 64-bit 링크를 복사)
      • 다운로드: wget 복사한 링크
      • 실행 권한 설정: chmod +x 다운로드 받은 miniconda file name
      • 설치: ./Miniconda3 file name
    • local 환경과 동일하게 설정

      • source .bashrc
      • base는 전역환경을 의미한다. 가상환경이 활성화된 상태와 그렇지 않은 경우를 구별해준다.
    • 패키지 업데이트 및 업그레이드

      • sudo apt-get update
      • gcc 설치: sudo apt-get install gcc —> mysqlclient 설치 시 error를 방지해준다.
      • mysqlclient 설치: sudo apt-get install libmysqlclient-dev
    • 가상환경 생성

      • conda create -n project python=3.8
      • 활성화: conda activate project
      • repository clone하기: git clone repository 주소
      • 디렉터리 이동 —> requirements 확인 —> 모든 pip module install —> gunicorn 및 PyMySQL module을 목록에 추가 —> pip install -r requirements.txt
  • 서버 열기

    • settings.py 수정

      • allowed host 의 ip 수정 : “[IPv4 퍼블릭 IP]”, “[IPv4 퍼블릭 IP:8000]” 추가
    • my_setting.py 생성

      • 로컬활경의 my_settings.py 복붙
      • host, password 수정
      • host의 경우 RDS의 앤드포인트로 수정
    • public ip로 서버 열기

      • python manage.py runserver 0:8000
  • 배포

    • nohup gunicorn --bind=0.0.0.0:8000 [django프로젝트명].wsgi &
    • ps -ef | grep python 으로 확인 가능 —> postman으로 테스트
    • gunicorn 종료 —> kill 24333(gunicorn 실행했을 때 나오는 번호 입력하면 된다)
profile
Difference & Repetition

0개의 댓글