웹 개발/AWS

AWS(EC2, RDS 프리티어 설정하기)

HyunSuk 2021. 5. 3. 14:30

AWS

  • 아마존 웹 서비스의 약자로 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼입니다.
  • EC2 : 다양한 종류의 가상서버를 만들어주는 서비스

리전: 2개이상의 가용영역으로 구성

EC2 인스턴스 구성

인스턴스 시작 클릭

 

1.EC2에서 사용할 OS버전 선택 > Ubuntu Server 18.04



2.CPU 메모리 등 서버의 규모를 선택 (프리티어 t2.micro선택)

 

* 다른 사이즈로 선택할 시 과금 우려

3.인스턴스 구성화면 서브넷

Virual Private Cloud (VPC) : AWS계정 전용 가상 네트워크,
인터넷에 연결되어야 하는 리소스는 퍼블릭 서브넷, 인터넷에 연결되지 않는 리소스에는 프라이빗 서브넷을 사용
ip주소를 기반으로 한 논리적인 네트워크 공간 구성, 방화벽 설정 가능, 서브넷에 배치


종료방지 기능 (우발적인 종료로 부터 보호 체크)

4.스토리지 추가

  • 용량을 기본 8기가 보다 더 증가하면 추가 과금

5.태크 추가

키와 값 형태로 태그를 정의
용도에 따라 여러 태그를 지정 가능
(키 : 계정 네임, 값 : 프로젝트 네임 으로 지정)

5.보안그룹 구성

기본적으로는 모든 ip로 부터 ssh 접속을 허용
규칙 추가 : 포트범위 8000 소스 위치무관

6.검토 및 시작


새 키페어 생성 (키페어 이름 설정, 키페어 저장하여 관리)
키페어 권한 설정 : aws폴더에 가서 키페어 파일 권한 설정

$ chmod 400 키페어이름.pem

ssh 접속
$ ssh -i 키페어이름.pem ubuntu@공인 아이피(Ec2서버의 공인 IP)




 

AWS_RDS


1.데이터 베이스 항목 클릭 데쉬보드

2.파라미터 그룹 클릭 생성

(설정값 변수값 설정)
파라미터 그룹 패밀리 (데이터베이스 종류에 따른 파라미터의 기준이 되는 데이터베이스의 정보를 선택)
Mysql5.7 선택
그룹이름 : 생성할 RDS이름


3.파라미터 그룹에서 파라미터 그룹 편집 클릭

AWS에 전달하는 설정값

검색 : character_set
character_set에 관련된 값 utf8mb4 설정 (utf8을 개량하여 만든 이모티콘까지 저장 가능한 모듈)
character_set_client
character_set_connection
character_set_database
character_set_fillesystem
character_set_results
character_set_server

검색: collation
collation_connection: utf8mb4_general_ci 설정
collation_sercer : utf8mb4_unicode_ci 설정 저장

4.RDS 데이터베이스 생성

표준생성 > MySql > 버전 선택 > 탬플릿(프리티어) > 설정 DB인스턴스 식별자(프로젝트에 맞는)> 마스터 사용자이름(root) > 마스터 암호 > DB 인스턴스 크기(프리티어 자동설정) > 스토리지 (범용, 20GB) 연결 > 추가연결 구성

퍼플릭 엑세스 가능 (데이터베이스를 외부에서 접속 허용)



보안그룹 설정 이름 설정, 가용영역(ap-northeast-2a, 포트 3306)

추가구성 : 초기데이터베이스 이름 지정 (생성시 같이 생성)
DB파라미터 그룹 : 내가 설정한 파라미터 그룹으로 설정하여 생성
삭제방지 활성화

데이터베이스 생성!

데이터베이스


생성된 데이터베이스 클릭 (엔드포인트) 확인
보안 그룹 규칙 클릭 (인바운드) > 인바운드 규칙 편집 > 소스(위치무관)변경 규칙 저장

AWS데이터 베이스 실행


터미널 실행 후

$ mysql 실행확인

$ mysql -h AWS-RDS엔드포인트 -u root -p 비밀번호 입력 후 접속

로컬 데이터 덤프


로컬 mysql 접속 후 데이터 베이스 확인 후 다시 나가기!!!
$ mysqldump -u root -p 데이터베이스명 > 파일이름.sql
비밀번호 입력 후 파일 생성

AWS로 데이터 전송하기

AWS 데이터베이스 실행 후 데이터베이스 만들기
$ create datebase 이름 charater set utf8mb4 collate utf8mb4_general_ci;
서버 접속 해제 후

$ mysql -h AWS-RDS엔드포인트 -u root -p 데이터베이스명 < 파일이름.sql

 

실행시 비밀번호 입력 후 데이터 파일 AWS-RDS로 업로드

EC2 RDS 프로젝트 배포

1.ssh EC2 서버 접속

2.터미널 실행 후 pem파일 위치로 이동

3.$ ssh -i pem파일이름.pem ubuntu@퍼블릭 IPv4 주소 > 실행

4.환경설정 ubuntu로 설치 하여야함.

5.미니콘다 설치(ubuntu형으로 설치) (가상환경 설정)

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

실행권한 설정
$ chmod +x Miniconda3-latest-Linux-x86_64.sh

미니콘다 실행 설치
$ ./Miniconda3-latest-Linux-x86_64.sh
모두 yes

설치 후 로컬환경과 동일한 설정(base 생김)
$source .bashrc

패키지 업데이트, 업그레이드
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc

Mysql client 설치
$ sudo apt-get install libmysqlclient-dev

미니콘다 가상환경 설정
$ conda create-n 이름 python=3.7
$ conda activate 이름

레파지토리 클론
$ git clone 깃헙주소

requirements.txt 확인 후 설치
$ pip install -r requirements.txt

pip 설치 확인
$ pip freeze

 

settings.py에 EC2 서버의 퍼블릭 IP설정

 

 

-sttings.py 수정

 

 

EC2퍼플릭 ip로 수정

 

내프로젝트에 my_settings.py 만들기
로컬 내프로젝트의 my_settings.py 복사

서버 동작
$ python manage.py runserver 0:8000

구니콘 설치
$ pip install gunicorn

백그라운드에서 실행
$ nohup gunicorn --bind=0.0.0.0:8000 어플이름.wsgi &

실행확인
$ ps -ef | grep python

(실행시 처음보이는 숫자4개 pid)

서버 종료 시 

$ ps -ef 

위 명령어를 실행하면 현재 실행중인 proscess 목록이 나옵니다. 

만약 server실행 시 포트 8000 으로 실행하였다면

$ ps -ef | grep 8000 

* grep 은 ps -ef명령 실행 결과 중 "8000" 문구가 있는 대상을 필터링 하는 명령입니다.

실행한 server의 정보가 나와 있으면 그 중  pid라는 정보가 있습니다.

해당 proscess를 종료할 때는 아래 명령을 사용하시면 됩니다.

 

$ kill (pid)