AWS에서 초기환경 구축까지

Nam Eun-Ji·2020년 11월 28일
0

EC2

  1. 서비스 → EC2 → 인스턴스 시작

  2. 프리티어 기준 선택
    (1) AMI선택 : Ubuntu Server 18.04 LTS (HVM), SSD Volume Type - ami-00379ec40a3e30f87

    (2) 인스턴스 유형 선택: t2.micro

    (3) 인스턴스 구성

    (4) 스토리지 추가

    (5) 태그추가

    (6) 보안 그룹 구성

    (7) 인스턴스 시작 검토

    (8) 키페어 다운로드








RDS

  1. 서비스 → 데이터베이스 → RDS

  2. mysql 설정파일 생성(default가 있지만 utf8mb4 지정을 해줘야 한국어, 이모티콘까지 저장 가능하다.

    1. 파라미터그룹 → 파라미터그룹생성
    2. 생성 파일 수정
      • chracter_set_client → utf8mb4
      • chracter_set_connection → utf8mb4
      • chracter_set_database → utf8mb4
      • chracter_set_results → utf8mb4
      • chracter_set_server → utf8mb4
      • collation_connection → utf8mb4_general_ci
      • collation_server → utf8mb4_unicode_ci

    1. 서비스 → 데이터베이스 → RDS → 데이터베이스 생성

    2. 엔드포인트 확인 : 이 주소로 데이터베이스에 접근 가능

    3. 보안그룹 소스 부분을 '위치무관'으로 변경하여 어디서든 접속가능하게 변경. 원래는 이렇게 해서는 안됨. 해킹 위험이 있음








키 페어 관리

  1. 키 권한 변경(사용자 자신만 볼 수 있게끔 수정)
    기존 : -rw-r--r--
    변경 : -r--------
chmod -R 400 project.pem








EC2 접속하기

  1. EC2의 실행중인 인스턴스의 IPv4 퍼블릭 IP를 확인 후 ssh를 통해 아래와 같이 접근
# ssh -i pem경로 user-name@public-dns-name
ssh -i /Users/nam-eunji/.ssh/project.pem ubuntu@15.165.77.198
  • pem 경로 : 키 경로
  • user-name : 인스턴스의 유저를 따로 설정하지 않았기 때문에 default값을 따름. Ubuntu AMI 경우 : ubuntu 또는 root
  • public-dns-name : 인스턴스의 IPv4 퍼블릭 IP








EC2 초기환경 셋팅

  1. miniconda 설치 : Linux installers python 3.7 링크 주소 복사 후 EC2 접속된 상태에서 wget
    https://docs.conda.io/en/latest/miniconda.html
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  1. 파일의 권한을 바꿔줘야 실행이 가능하기 때문에 실행권한을 줌
chmod +x Miniconda3-latest-Linux-x86_64.sh
  1. 파일 실행 : enter, yes를 실컷 눌러줌
./Miniconda3-latest-Linux-x86_64.sh
# Thank you for installing Miniconda3!
  1. conda 환경변수 변경
cd miniconda3/bin
./conda init bash
cd
source .bashrc
  1. 가상환경 생성 후 필수 설치 파일 설치
    https://velog.io/@nameunzz/Django-초기셋팅
    이미 git에 올린 것이 있다면 git clone을 먼저 진행 후
git clone <git repo url>
sudo apt-get update
sudo apt-get upgrade
sudo apt install gcc   # mysql
sudo apt-get install libmysqlclient-dev
pip install -r requirements.txt  # 설치파일 목록 requirements.txt
  1. my_settings.py 수정하여 장고와 mysql을 연결.
# my_settings.py
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'wemakers',        # 데이터베이스명, 데이터베이스 생성되어 있어야함
        'USER': 'root',
        'PASSWORD': 'password',    # 데이터베이스 접근 가능한 비번
        'HOST': 'project.cav7isnwqwcb.ap-northeast-2.rds.amazonaws.com',  # 데이터베이스(RDS) 엔드포인트
        'PORT': '3306',
    }
}
  1. project/settings.py 수정
# settings.py
ALLOWED_HOSTS = ['*', "15.165.77.198", "15.165.77.198:8000"]   # EC2의 IPv4 퍼블릭 IP
  1. gunicorn을 이용하여 장고서버 구동
    → 파이썬을 이용해 웹서버를 돌릴 때
    → 모든 파이썬서버들은 wsgi.py 파일을 이용해 서버를 돔
    → gunicorn이 wsgi.py를 컨트롤
pip install gunicorn
nohup gunicorn --bind 0.0.0.0:8000 wemakers.wsgi &
ps -ef | grep python
kill 29388    # 서버 강제 종료 시킬 수 있음







RDS 접속

mysql -h RDS엔드포인트주소 -u root -p







로컬 db를 RDS로 이관

  1. 특정 데이터베이스를 백업하는 방법: mysqldump를 이용하여 db백업
# mysqldump -u root -p --databases 데이터베이스명 > 데이터베이스파일명.sql
mysqldump -u root -p --databases wemakers > wemakers.sql
  1. 로컬pc의 파일을 EC2 서버로 복사
# 새로운 터미널 내
# 파일 전송
scp -i [pem file] [upload file] [user id]@[ec2 public IP]:~/[transfer address]
# 폴더 전송
scp -i [pem file] -r [upload folder] [user id]@[ec2 public IP]:~/[transfer address]
# 예
scp -i /Users/nam-eunji/.ssh/project.pem /Users/nam-eunji/Project/wemakers.sql ubuntu@15.165.77.198:/home/ubuntu/weMakers_backend
  1. EC2에서 RDS mysql 접속
# mysql -h RDS주소 -u 사용자명 -p 디비명 < backup.sql
mysql -h project.cav7isnwqwcb.ap-northeast-2.rds.amazonaws.com -u root -p wemakers < wemakers.sql
  1. 복원 확인 방법
mysql -h RDS주소 -u 사용자명 -p
(enter your password)
use 디비명;
show tables;
profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글