코딩,해볼까

06.06. 최종 프로젝트 / python django project / 초기 파일 준비 : 가상환경 venv, postgresql 12, .env 본문

Back/TIL

06.06. 최종 프로젝트 / python django project / 초기 파일 준비 : 가상환경 venv, postgresql 12, .env

떠굥 2023. 6. 6. 23:35

0. 파이썬 버전 확인

가장 안정적인 파이썬 3.8로 프로젝트를 진행하고자 한다.

내 컴퓨터에는 3.11 버전이 설치되어 있으므로, pyenv로 3.8 버전을 설치해준다.

macOS : pyenv   |   Window : pyenv-win

pyenv install 3.8.0
pyenv global 3.8.0

위 셋팅이 안될 시 pyenv 환경변수 참고 블로그에서 환경변수만 넣어줬다.

1. 가상환경 설정

python -m venv venv
source venv/Scripts/activate

+ 파이썬 버전 확인

 

python version 

0번에서 pyenv global 을 지정하였기 때문에 3.8.0으로 나왔다.

pyenv local로 애플리케이션별 파이썬 버전을 설정할 수 있다. 

2. requirements.txt 생성

pip freeze > requirements.txt

3. django rest-framework, simple-jwt 한꺼번에 설치.

pip install djangorestframework-simplejwt

+ macOS는 아래 4번단계 진행을 위해

pip install psycopg2-binary 를 먼저 해준다.

 

4. DB 설정

1) PostgreSQL 12 버전 설치

2) SQL Shell (psql) 실행 (함께 설치된다. 시작버튼 우클릭 검색을 이용하자.)

3) Shell 에서 아래와 같은 순서로 진행한다.

(enter > enter > enter > enter > 암호 입력 > postgres=# 나오면 성공!

Server [localhost]: # enter
Database [postgres]: # enter
Port [5432]: # enter
Username [postgres]: # enter
postgres 사용자의 암호: # postgrasql install 시 적었던 암호 입력

psql (10.23)
도움말을 보려면 "help"를 입력하십시오.
postgres=# 

# 여기까지 나오면 성공!

4) 데이터베이스를 생성하자. (각 줄의 끝마다 ; 는 필수!)

 

- CREATE DATABASE 데이터베이스 이름;

CREATE DATABASE db이름;
# CREATE DATABASE 확인문구

 

- CREATE USER 유저이름 WITH PASSWORD '패스워드';

CREATE USER 유저 WITH PASSWORD '패스워드';
# CREATE ROLE 확인문구

 

- 인코딩, 아이솔레이션, 타임존, 유저 권한 추가.
아래와 같이 한줄씩 입력하고 확인문구가 나오는지 확인한다.

ALTER ROLE 유저 SET client_encoding TO 'utf8';
# ALTER ROLE 확인문구

ALTER ROLE 유저 SET default_transaction_isolation TO 'read committed';
# ALTER ROLE 확인문구

ALTER ROLE 유저 SET TIME ZONE 'Asia/Seoul';
# ALTER ROLE 확인문구

GRANT ALL PRIVILEGES ON DATABASE gwolnadri_db TO 유저;
# GRANT 확인문구

5. settings.py의 DATABASES 설정 + .env 설정

pip install django-environ

settings.py 파일

import os
import environ


# env 설정 : SECRET_KEY, DB

env = environ.Env(
    DEBUG=(bool, False)
)

environ.Env.read_env(os.path.join(BASE_DIR, '.env'))


# env 설정 : SECRET_KEY

SECRET_KEY = os.environ.get("SECRET_KEY")


# Database = postgresql 12 / env

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('DB_NAME'),
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': os.environ.get('DB_HOST'),
        'PORT': os.environ.get('DB_PORT'),
    }
}

.env 파일 (root 위치에 직접 생성한다.)

SECRET_KEY=''
DB_NAME=''
DB_USER=''
DB_PASSWORD=''
DB_HOST='localhost'
DB_PORT='5432'

6. DB 테이블 생성하고 기본 mirgate 진행

pip install psycopg2
python manage.py migrate

7. DB가 잘 설치되었는지 확인하기

  • pgAdmin 4에서 확인하기
    • pgAdmin 실행
    • Servers 더블클릭 > postgresql 설치 시 입력한 pw로 접속
    • PostgreSQL 12 > db 생성 시 만들었던 id와 pw로 접속
    • Databases > Schemas > public > Tables 에 db가 생성된 것을 확인할 수 있다.

  • SQL Shell 로 확인하기
    • Database, Username, 사용자의 암호 입력
    • \dt 입력

 


+ pgAdmin 실행오류, 실행되지 않을 때, 무한로딩

1. pgAdmin 링크로 가서 나에게 맞는 pgAdmin 버전을 다운받아 재설치한다.

2. pgAdmin4 v7(나는 7 버전을 다운받았다.)  을 실행하면 해결!

 

+ db 이름을 잘못 생성해서 지우고 다시 만들어봤는데, 다 지워지지 않은 것인지... root 가 생성되지 않았다. 더 알아보려고 한다.

Comments