Django ⎮server, database 초기세팅

Chris-Yang·2021년 10월 10일
2

Django

목록 보기
1/7
post-thumbnail

> 흐름 요약

가상환경 생성 -> DB 생성 ->
Package 설치/세팅 -> Project 생성 ->
settings.py 및 my_settings.py 설정 -> 서버 실행





> 세팅 순서 및 내용

▶︎ 가상환경 생성

가상환경은 선택사항일 수는 있으나 프로젝트마다 사용하는 패키지들의 버전이
다를 수 있기 때문에 어느정도 필수 불가결하다.

miniconda를 사용하여 가상환경을 설정해보겠다.

가상환경을 만들어준 후 해당 가상환경을 실행시킨다.

# 가상환경 생성
conda create -n 가상환경이름 python=버전(: 3.7)

# 가상환경 활성화
conda activate 가상환경이름

▶︎ DataBase 생성

MySQL기준으로 다음과 같이 DB를 생성한다.

utf8mb4로 케릭터셋을 해야 이모지에 의한 오류가 나지 않는다.

# MySQL 로그인
mysql -u root -p

# 새로운 database 생성
mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;


▶︎ Package 설치

자신이 사용할 패키지들을 설치해준다.

가상환경이 활성화 되어있고 원하는 가상환경인지 체크하고 설치 시작~!

pip install django

# MySQL server에 접속하기 위한 패키지로 일반적으로 mysqlclient을 설치
pip install mysqlclient

## mac m1의 경우 mysqlclient이 아닌 PyMySQL을 설치해야 한다.
pip install PyMySQL

PyMySQL을 설치한 경우 이후 django project 생성후 settings.py에서
아래와 같은 내용을 추가해야 한다.

import pymysql

pymysql.install_as_MySQLdb()

▶︎ Project 생성

이제 본인이 다루는 프로그램을 세팅하면 된다.

django의 경우 다음과 같이 프로그램을 setting한다.

# 장고 명령어로 프로젝트를 생성
django-admin startproject 프로젝트이름

# 해당 프로젝트로 경로로 이동
cd 프로젝트이름


▶︎ settings.py 등 설정

프로젝트에 알맞게 settings.py를 수정한다.

🥕 설정에 대한 자세한 내용
https://docs.djangoproject.com/ko/3.2/ref/settings

ALLOWED_HOSTS를 asterisk(*)로 설정하면 모든 호스트를 허용한다.

ALLOWED_HOSTS = ['*']

사용하지 않는 app과 middleware들을 주석처리 혹은 삭제한다.

INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

메인 app의 urls.py를 수정해준다.

from django.urls import path

urlpatterns = [
]

암호 등이 담긴 내용은 별도로 관리해야 하기 때문에
따로 파일을 만들어 차후 github등에 올리지 않도록 세팅해둔다.

프로젝트 최상위 경로 안에 만들어준다.

# 최상위 루트로 이동
cd 프로젝폴더이름

# 암호나 비밀키 등 예민한 데이터를 관리할 파일을 만들어준다.
touch my_settings.py

DB, SECRET_KEY와 같은 내용을 넣어 관리한다.

DATABASES = {
  'default' : {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DATABASE 명',
    'USER': 'DB접속 계정명',
    'PASSWORD': 'DB접속용 비밀번호',
    'HOST': '127.0.0.1',
    'PORT': '3306',
    'OPTIONS': {'charset': 'utf8mb4'}
  }
}

# settings.py에 있는 SECRET_KEY 사용
SECRET_KEY = 시크릿키를넣으세요

사용하는 곳에서는 경로와 변수명 등을 통해 가져와 쓰면 된다.

# 다음과 같이 settings.py에서 my_settings.py를 연동한다.

from my_settings    import DATABASES, SECRET_KEY

DATABASES = DATABASES
SECRET_KEY = SECRET_KEY

🥕 django DataBase info
https://docs.djangoproject.com/ko/3.2/ref/settings/#databases


corsheaders 패키지를 설치하여 cors문제를 처리한다.

pip install django-cors-headers

이어지는 내용은 settings.py에 작성하는 내용들이다.

INSTALLED_APPS = [
    ...(다른 앱들),
    'corsheaders'
]

MIDDLEWARE = [
    ...(다른 미들웨어들),
    'corsheaders.middleware.CorsMiddleware',
]

# cors 추가설정 부분 삽입
# CORS
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

🥕 CORS는 왜 이렇게 우리를 힘들게 하는걸까?
https://evan-moon.github.io/2020/05/21/about-cors/



▶︎ 서버 실행

세팅이 이상 없이 진행되었는지 서버를 실행시켜 확인할 수 있다.

해당 가상환경을 활성화한 상태인지 확인하고 실행하자.

오류가 있다면 오류메시지를 통해 수정해 나가면 된다.🥲

# 서버를 실행시키는 명령어
# runserver 뒤에 임의로 포트를 지정할 수 있다.(예: runserver 8100)
python manage.py runserver

아래의 메시지가 뜬 경우 완료. 성공적.

profile
sharing all the world

0개의 댓글