Django 2.1 서버 구축 및 연결 - DB 서버 및 시스템 연동

dev용 DB, prod용 DB 구축하여 연결하기

  1. Django에서 PostgreSQL 연결하기 위해 psycopg2 모듈 설치

    poetry add psycopg2-binary
  2. dev용 DB는 로컬 서버, PostgreSQL 시스템 이용

    # velog/config/settings/dev.py
    
    # ...
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': config('DEV_DB_NAME'),
            'USER': config('DEV_DB_USER'),
            'PASSWORD': config('DEV_DB_PASSWORD'),
            'HOST': config('DEV_DB_HOST'),
            'PORT': '',
        }
    }
  3. prod용 DB는 다른 서버, PostgreSQL 시스템 이용

    # velog/config/settings/prod.py
    
    # ...
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': config('PROD_DB_NAME'),
            'USER': config('PROD_DB_USER'),
            'PASSWORD': config('PROD_DB_PASSWORD'),
            'HOST': config('PROD_DB_HOST'),
            'PORT': config('PROD_DB_PORT'),
        }
    }
  4. .env 파일에 각 DB 정보 추가

    # velog/.env
    
    # ...
    DEV_DB_NAME=velog
    DEV_DB_USER=velog
    DEV_DB_PASSWORD=velog
    DEV_DB_HOST=localhost
    
    PROD_DB_NAME=velog
    PROD_DB_USER=velog
    PROD_DB_PASSWORD=velog
    PROD_DB_HOST=192.168.0.4
    PROD_DB_PORT=5432
  5. PostgreSQL에서 dev용 DB 계정 및 시스템 생성

    sudo -u postgres psql  # postgres 계정으로 psql 접속
    CREATE USER velog;  /* DEV_DB_USER */
    ALTER USER velog with password 'velog';  /* DEV_DB_PASSWORD */
    CREATE DATABASE velog owner velog;  /* DEV_DB_NAME */
    \q
  6. 다른 서버에 원격 접속하여 마찬가지로 prod용 DB 계정 및 시스템 생성

  7. (원격 접속) 5432 포트 열고 postgresql.confpg_hba.conf 파일에서 설정 변경

  8. Django에서 현재 프로젝트에 대해 모든 가능한 migration 정보 확인

    # /velog
    python manage.py showmigrations  # dev
    python manage.py showmigrations --settings=config.settings.prod  # prod
  9. 둘 다 migration 정보가 잘 뜨면 성공

좋은 웹페이지 즐겨찾기