Django 프로젝트 세팅 1(서버, 데이터베이스)

강민성·2021년 12월 9일
0

Django Project 초기 세팅

장고의 기능과 기본 프레임 포스팅
Django tutorial: Django로 앱 만들기 예제(템플릿과 관리자 페이지 설정은 여기 실려 있음)

기본 순서
가상환경, 데이터베이스 설치 & 기본 프로그램 설치 -> 장고로 프로젝트 생성, 구성

가상환경, 데이터베이스 설치 & 기본 프로그램 설치

가상환경 생성

conda create -n 가상환경이름 python=3.x

현재 깔려있는 파이썬 버전명을 적으면 됨

가상환경 실행

conda activate 가상환경이름

데이터베이스 생성

mysql 접속

mysql -u root -p

mysql 비밀번호 입력

mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;

mysql> create database 데이터베이스이름까지만 명령해도 데이터베이스가 생성됨
(character set utf8mb4 collate utf8mb4_general_ci; 외국어 입력 및 이모지 입력을 위한 설정)

생성된 데이터베이스 확인

show databases;

mysql에서 나가기

exit

가상환경에 Django 패키지 설치

pip install django

가상환경 실행 후 설치

mysqlclient 설치

M1은
pip install PyMySQL

그 외엔
pip install mysqlclient

우분투에서 설치 안될떄
sudo apt-get install libmysqlclient-dev 
pip install mysqlclient

이후에 MySQL server에 접속하기 위한 package 설치
mysql을 먼저 설치해야 설치할 수 있음

프로젝트 코드를 저장할 상위 디렉토리 생성

프로젝트 코드를 저장할 상위 디렉토리로 이동

장고로 프로젝트 생성, 구성

프로젝트 생성

django-admin startproject 프로젝트이름

상위 디렉토리 안에 프로젝트 디렉토리 생성

settings.py 설정

IP 허용

ALLOWED_HOSTS = ['']

접근을 허락할 IP들을 리스트에 추가
(*은 모든 IP의 접근을 허용한다는 의미)

INSTALLED_APPS 리스트, MIDDLEWARE 리스트안에서 사용하지 않을 기능들을 주석처리


Admin 관련 app과 middleware 주석처리

관리자 페이지 기능을 사용하지 않을 경우, 프로젝트 디렉토리/urls.py의 urlspatterns 리스트에서 관리자 경로 삭제

프로젝트 디렉토리에 my_settings.py을 생성하여 데이터베이스설정들과 시크릿키, 민감한 정보들 추가

cd 프로젝트디렉토리이름
touch my_settings.py

manage.py가 있는 위치에 생성

  • my_settings.py에 추가할 정보
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1', #내 컴퓨터의 값
        'PORT': '3306', #한 컴퓨터에서 여러 개 가질 수 있는 값
				'OPTIONS': {'charset': 'utf8mb4'}
    }
}

SECRET_KEY = '시크릿키' # settings.py에 있는 secret_key 를 사용

(ALGORITHM = '알고리즘내용') # 데이터 암호화(bcrypt, JWT)를 하는 경우 설정

settings.py와 my_settings 연동

from pathlib        import Path #기존에 settings.py 에 있는 코드
from my_settings    import DATABASES, SECRET_KEY(, ALGORITHM)

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

(ALGORITHM = ALGORITHM)

settings.py에 my_settings.py의 내용을 import하고 내용을 변경

m1은 settings에 아래 내용 추가

import pymysql

pymysql.install_as_MySQLdb()

외부의 프론트 서버가 내 서버에 접근할 수 있게 설정(corsheaders)

pip install django-cors-headers

설치 후 settings.py에 INSTALLD_APPS 안에 아래와 같이 추가

INSTALLED_APPS = [
...
		'corsheaders'
]
MIDDLEWARE = [
	...
		'corsheaders.middleware.CorsMiddleware',
	...
]

settings.py에 CORS 추가 설정

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

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

# request의 header에 올 수 있는 key값들
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

settings.py에 '/' 관련 에러 제거

APPEND_SLASH = False

settings.py에 Debug=True로 설정

개발할때는 Debug=True로 해줘야 함
True를 사용하면 터미널에서 다양한 에러 메시지를 받을 수 있음
사이트를 서비스할때는 Debug=False로 설정

1) requirements.txt 생성(협업시 코드를 공유할 때 필요)

pip freeze

manage.py가 있는 위치에서 위 코드 실행

requirements.txt 생성

vi requirements.txt

manage.py가 있는 위치에 생성

필수 패키지를 복사 붙여넣기 후, 저장

m1일 경우 PyMySQL 추가
예시

Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3

# m1의 경우 아래 패키지도 추가
PyMySQL==1.0.2

2) requirements.txt로부터 프로그램 내려받기(협업시 코드를 공유할 때 필요)

requirements.txt에서 현재 로컬 가상환경에 설치되지 않은 프로그램 설치

pip install -r requirements.txt

# m1의 경우 아래 패키지도 추가
PyMySQL==1.0.2

변경사항 저장

변경사항을 데이터베이스에 적용

python manage.py migrate

프로젝트 서버 실행(오류가 없는지 확인)

python manage.py runserver 포트이름

제대로 동작하는지 확인
(제대로 설정했을 경우 로켓이 날아가는 걸 볼 수 있다)

profile
Back-end Junior Developer

0개의 댓글