엔진 PostgreSQL 사용 이유 :
Django 에서 공식적으로 지원하는 databases이기에 사용함
1. Django
- psycopg2 설치
- 이유 : Python이 Postgres와 함께 작동하기 위해 모듈 설치
- OS에 pg_config 설치가 선행되어야 함
- pip requirements.txt에만 추가해주어 우분투에서 설치해도 무관
- settings.py DATABASES 설정 -> env로 설정
DATABASES = {
'default': {
'ENGINE': os.environ.get('SQL_ENGINE',"django.db.backends.sqlite3"),
'NAME': os.environ.get('SQL_DATABASE', BASE_DIR / "db.sqlite3"),
'USER': os.environ.get('SQL_USER', 'user'),
'PASSWORD': os.environ.get('SQL_PASSWORD', 'password'),
'HOST': os.environ.get('SQL_HOST', 'localhost'),
'PORT': os.environ.get('SQL_PORT', '5432'),
}
}
- SECRET_KEY 발급 (명령어)
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
- .env.prod 생성
POSTGRES_DB='RDS인스턴스 생성시 초기 데이터베이스 이름'
POSTGRES_USER='RDS인스턴스 생성시 마스터 사용자 이름'
POSTGRES_PASSWORD='RDS인스턴스 생성시 마스터 사용자 암호'
- .env.postgres.prod 생성
DEBUG='0'
SECRET_KEY = '새로만든 SECRET_KEY'
DJANGO_ALLOWED_HOSTS='127.0.0.1 IP주소 URL주소'
SQL_ENGINE='django.db.backends.postgresql_psycopg2'
SQL_DATABASE='RDS인스턴스 생성시 초기 데이터베이스 이름'
SQL_USER='RDS인스턴스 생성시 마스터 사용자 이름'
SQL_PASSWORD='RDS인스턴스 생성시 마스터 사용자 암호'
SQL_HOST='RDS 인스턴스의 엔드포인트'
SQL_PORT='5432'
- .env.prod와 .env.postgres.prod의 내용이 일치해야하는 부분이 있음
- DB 이름 / USER / PW
- docker-compose.yml 에 .env.prod 적용
- 이것만 봐서는 모를테니 프로젝트 내 yml 파일을 참고바람
- web에 적용을 시켜줘야함. nginx에 넣는 거 아님
env_file:
- ./.env.prod
여기까지 Django에서 적용!
모두 git 에 push 해놓기
2. AWS
- RDS 인스턴스 생성 ( 여기 없는 내용은 디폴트값 적용)표준 선택템플릿 : 프리티어 사용마스터 사용자 이름 = DB 인스턴스 마스터 사용자 = .env.prod 의 POSTGRES_USERDon’t connect to an EC2 computer resource 선택VPC : 더보기 클릭 -> EC2 인스턴스 요약에 있는 VPC ID 선택VPC 보안 그룹 : 기존 항목 선택 : 기존 VPC 보안 그룹 더보기 클릭 -> EC2 인스턴스 보안그룹 선택 (default 해제하여 보안그룹 하나만 선택해줌)데이터베이스 포트 : 5432 확인생성 버튼 클릭하여 생성!이 내용을 위의 .env.postgres.prod에 넣어주기
- 끝!
- 상태가 사용가능으로 바뀌면 인스턴스에서 엔드포인트와 포트 확인 가능해짐
- 초기 데이터베이스 이름 = .env.prod 의 POSTGRES_DB
- 추가구성
- 퍼블릭 액세스 : 예
- 이유 : 밑의 VPC와 가용범위를 설정하여 연결
- 마스터 암호 = .env.prod 의 POSTGRES_PASSWORD
- DB 인스턴스 식별자 = 인스턴스에 표시될 이름
- 엔진 선택 : PostgreSQL / 버전 가장 최신
- 데이터 베이스 생성 ->
- EC2 인스턴스 연결 ( Ubuntu 연결 )git checkout 브랜치sudo apt-get update -> psycopg2 받았기 때문에 update해줘야함sudo docker images -> 이미지 확인 -> 다 삭제하기 (sudo docker image prune)sudo docker ps -> web 혹은 django 컨테이너 이름 확인하기python manage.py makemigrationspython manage.py collectstaticexit만약 되질 않고 Error 발생시 !sudo docker-compose build -> 이미지 생성오류 해결 후 다시 한번 컨테이너와 이미지를 모두 삭제한 상태에서
- sudo docker-compose up -d —build -> 이미지 만들고 컨테이너 만들고 올리기 와 이후의 과정을 해보시면 될 듯 합니다.
- sudo docker-comopse up -> 로그 확인하면 어디서 오류가 나는지 확인이 가능합니다.
- sudo docker-compose down -> 컨테이너 내리기
- 브라우저 IP주소 입력하여 접속해보면 admin페이지를 들어갈 수 있습니다.
- python manage.py createsuperuser
- python manage.py migrate
- sudo docker exec -ti 컨테이너이름 /bin/sh -> 입력하는 창이 바뀔텐데 터미널 들어간 상태임
- sudo docker-compose up -d —build
- sudo docker ps -> 컨테이너 확인 -> 다 삭제하기 (sudo docker container prune)
- git pull 하여 최신 상태 유지
- cd 프로젝트 이름
반응형
'PROJECTS' 카테고리의 다른 글
https 적용 (0) | 2022.09.06 |
---|---|
도메인 연결 (0) | 2022.09.05 |
AWS EC2 배포과정 (0) | 2022.09.02 |
서비스 레이어 (0) | 2022.09.01 |
Team Project | 🌲 KPT | iPark 최종발표 (0) | 2022.08.17 |