가상환경 생성 -> DB 생성 ->
Package 설치/세팅 -> Project 생성 ->
settings.py 및 my_settings.py 설정 -> 서버 실행
가상환경은 선택사항일 수는 있으나 프로젝트마다 사용하는 패키지들의 버전이
다를 수 있기 때문에 어느정도 필수 불가결하다.
miniconda를 사용하여 가상환경을 설정해보겠다.
가상환경을 만들어준 후 해당 가상환경을 실행시킨다.
# 가상환경 생성
conda create -n 가상환경이름 python=버전(예: 3.7)
# 가상환경 활성화
conda activate 가상환경이름
MySQL기준으로 다음과 같이 DB를 생성한다.
utf8mb4로 케릭터셋을 해야 이모지에 의한 오류가 나지 않는다.
# MySQL 로그인
mysql -u root -p
# 새로운 database 생성
mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
자신이 사용할 패키지들을 설치해준다.
가상환경이 활성화 되어있고 원하는 가상환경인지 체크하고 설치 시작~!
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()
이제 본인이 다루는 프로그램을 세팅하면 된다.
django의 경우 다음과 같이 프로그램을 setting한다.
# 장고 명령어로 프로젝트를 생성
django-admin startproject 프로젝트이름
# 해당 프로젝트로 경로로 이동
cd 프로젝트이름
프로젝트에 알맞게 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
아래의 메시지가 뜬 경우 완료. 성공적.