[Django] (1) 환경설정

sunclock·2021년 1월 12일
0

백엔드

목록 보기
2/3
post-thumbnail

환경

MacOS Catalina 10.15.5
Python 3.9.1
Django 3.1.5
PostgreSQL 13
psycopg2-binary 2.8.6

글로벌 환경에 설치해야 할 것

  1. Python 버전 확인하기
$ python --version

만약 No moduel named python이라고 나오면 파이썬 공식 홈페이지에서 파이썬을 설치해야 합니다.

  1. pip 설치하기
$ sudo easy_install pip
  1. pip 최신 버전으로 업그레이드하기
$ pip install -U pip
  1. virtualenv 설치하기
$ sudo pip install virtualenv

가상 환경 만들기

  1. 프로젝트 디렉토리를 담을 상위 디렉토리 만들기
$ mkdir (parent_dir_name)
  1. 프로젝트 디렉토리 안에 venv라는 이름의 가상환경 만들기
$ cd (parent_dir_name)
$ virtualenv venv
  1. 가상환경 실행하기
$ source venv/bin/activate
  1. 가상환경 종료하기
$ deactivate

Django project 만들기

  1. 가상환경에 Django 설치하기
$ cd (parent_dir_name)
$ source venv/bin/activate
$ python -m pip install Django
  1. Django project 만들기
$ django-admin startproject (project_dir_name)
  1. 개발 서버에서 Django project 확인하기
$ python manage.py runserver (IP:port)

웹 브라우저에서 http://127.0.0.1:8000/ 에 접속합니다.

이런 이미지가 뜨면 Django가 잘 설치된 겁니다.

pip로 패키지 관리하기

  1. requirements.txt 만들기
$ cd (project_dir_name)
$ pip freeze > requirements.txt
  1. requirements.txt 설치하기
$ pip install -r requirements.txt

Postgres DB 만들기

  1. Postgres 설치하기
$ brew install postgresql
  1. DB와 관리자 유저 만들기
$ psql
# create database (project_dir_name);
# create user (username) with password (password);
# alter role sunclock set client_encoding to 'utf8';
# alter role sunclock set default_transaction_isolation to 'read committed';
# alter role sunclock set timezone to 'utc';
# grant all privileges on database (project_dir_name) to sunclock;
# \q

Postgres DB와 Django 연동하기

  1. Psycopg 설치하기
    Psycopg is a wrapper for the libpq, the official PostgreSQL client library.
$ pip install psycopg2-binary
  1. settings.py의 DATABASES에서 Postgresql에 데이터베이스 접근 권한 부여하기
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '(project_dir_name)',
        'USER': '(username)',
        'PASSWORD': '(password)',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
  1. DB migrate 하기
$ python manage.py makemigrations
$ python manage.py migrate
  1. DB 확인하기
$ psql
# \l ---> DB 목록 조회하기
# \c (project_dir_name) ---> Django Project DB 접속하기
# \dt ---> 테이블 조회하기 
# \du ---> 계정 목록 조회하기

비밀 키 안전하게 관리하기

  1. secrets.json 파일 만들기
    파일의 내용은 아래와 같이 한다.
{
	"FILENAME":"secrets.json",
	"SECRET_KEY": "(secret key at settings.py)",
    	"DATABASES_HOST": "127.0.0.1",
    	"PORT": "5432"
}
  1. settings.py 수정하기
    파일의 내용은 아래와 같이 한다.
# settings/base.py
import json
from pathlib import Path
from django.core.exceptions import ImproperlyConfigured

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

#Secret module based on JSON
secret_file = BASE_DIR / 'secrets.json'

with open(secret_file) as f:
	secrets = json.loads(f.read())
   
def get_secret(setting, secrets=secrets):
"""get secret key or return explicit exception"""
    try:
    	return secrets[setting]
    except KeyError:
    	error_msg = "Set the {0} environment variable".format(setting)
     	raise ImproperlyConfigured(error_msg)

SECRET_KEY = get_secret("SECRET_KEY")

(...)
  1. .gitignore 만들고 secrets.json 추가하기
    .gitignore generator에 Django, Python 등의 키워드를 입력하면 적절한 .gitignore 내용을 생성해준다.
    .gitignore 파일을 만들고, 생성된 텍스트를 붙여넣기 한다.
    추가로 secrets.json을 입력한다.
$ cd (project_dir_name)
$ vi .gitignore
secrets.json

Github에 프로젝트 보관하기

  1. 원격 저장소 만들기
    Github에 프로젝트를 보관할 repository를 만든다.

  2. 로컬 저장소 만들기

$ cd (project_dir_name)
$ git init
  1. 원격 저장소와 로컬 저장소 연결하기
$ git remote add origin https://github.com/(Github_username)/(Github_repository_name).git
  1. 원격 저장소에 로컬 저장소의 파일 올리기
$ git add *
$ git commit -m 'initial commit'
$ git push -u origin master 

배포

배포 시 둘 중 하나를 선택한다.

출처

파이썬 초심자를 위한 PIP 그리고 Virtualenv 소개
파이썬 3.9.1 공식 문서
virtualenv 공식 문서
Django 3.1 공식 문서
Psycopg 2.8.7.dev0 공식 문서
modwsgi 공식 문서
ZETAWIKI - PostgreSQL
POSTGRESQL과 DJANGO 연동(장고 데이터베이스 연동하기)
깃허브 사용해 보기
.gitignore generator
Django - settings.py 의 SECRET_KEY 변경 및 분리하기
Roy Greenfeld, D., & Roy Greenfeld, A. (2015). Two scoops of Django. Los Angeles: Two scoops press.

profile
안녕하세요.

0개의 댓글