훈훈훈

Amazon AWS :: EC2 인스턴스에 Django와 RDS 연동 본문

인프라/Amazon AWS

Amazon AWS :: EC2 인스턴스에 Django와 RDS 연동

훈훈훈 2020. 3. 7. 19:44

1. EC2 인스턴스에 mysqlclient 모듈 설치

Django에서 mysql을 연동하기 위해서는 mysqlcinent 모듈이 필요하다.

로컬환경에서는 pip 로 바로 설치가 가능하지만, EC2 인스턴스에서는 gcc  libmysqlclient-dev 설치가 선행되어야한다.

이 두개가 설치 되었다면, git에서 받은 파일에 첨부된 requirement.txt 파일에 있는 리스트들을 그대로 설치하거나, pip install mysqlclient를 진행해주면 된다.

sudo apt install gcc
sudo apt install libmysqlclient-dev

/*conda 가상환경에서 */
pip install -r requirement.txt

2. my_settings 생성 및 설정

보통 git에서는 my_settings 파일은 push하지 않기 때문에 EC2 인스턴스에서 다음과 같이 생성하거나 local에서 생성한 my_settings 파일을 그대로 복사하여 다음과 같이 DATABASES 부분만 수정한다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': [YOUR_RDS_MYSQL_DATABASE_SCHEME],
        'USER': '[YOUR_RDS_HOST_USER_NAME],
        'PASSWORD': [YOUR_RDS_HOST_PASSWORD],
        'HOST': [YOUR_RDS_HOST],
        'PORT': [DEFAULT_PORT_3306],
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            'charset': 'utf8mb4',
            'use_unicode': True,
        },
    }
}

SECRET_KEY = {
    'secret':[Your_SECRET_KEY],
    'algorithm':[YOUR_ALGORITHM]
}

3. RDS에 Database Sheme 생성

Django와 연동될 Scheme를 생성한다. create database만 진행해도 되지만 추후 이모지(Emoji)저장을 위해 utf8mb4로 설정하였다.

mysql> create database test character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.01 sec)

4. MySQL DUMP 및 RDS로 이관

로컬에 저장된 MySQL Scheme 를 덤프 후, RDS에 있는 MySQL Server로 이관시킨다.

// Local에서 진행 mysql sheme dump*/
mysqldump -u root -p [스키마네임] > [파일명].sql

// RDS 서버로 덤프 파일 이관
mysql -h [END_POINT] -u root -p [스키마네임] < [파일명].sql

// RDS에 접속하여 정상적으로 이관되었는지 확인
mysql -h [END_POINT] -u root -p

 

최종적으로 EC2에서 Django runserver 실행 시 RDS에 있는 DB와 연동이 되는 것을 확인할 수 있다.

Comments