📌 이 포스팅에서는 WetchaPedia 팀 프로젝트 과정에 앞서 초기 세팅 과정에 대해 정리하였습니다.
✔️ 프로젝트를 위해 project_env라는 이름의 가상환경을 python 3.8버전으로 생성하였다. 이후 가상환경으로 진입한다.
$ conda create -n [가상환경 이름] python=3.8 👈 가상환경 생성
$ conda activate [가상환경 이름] 👈 가상환경 활성화
✔️ 가상환경 내에서 Django를 설치하고, config란 이름으로 프로젝트를 만들어준다. 디렉토리를 추가적으로 감싸기 싫기 때문에 끝에 점(.)을 붙인다.
$ pip install django 👈 django 최신 버전 설치
$ django-admin startproject config . 👈 django 프로젝트 생성
✔️ 데이터베이스 생성 전, myqlclient와 PyMySQL를 설치한다. PyMySQL은 m1을 위한 배려다.
$ pip install mysqlclient 👈 mysqlclient 최신 버전 설치
$ pip install PyMySQL 👈 PyMySQL 최신 버전 설치
✔️ MySQL에 진입해 wetchapedia란 이름의 DB를 생성한다.
$ mysql -u root -p 👈 mysql 진입
mysql> create database [DB 이름] character set utf8mb4 collate utf8mb4_general_ci; 👈 DB 생성
✔️ 데이터베이스와 시크릿키를 은폐시키기 위해 my_settgins.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 = [SECRET_KEY]
✔️ my_settings의 정보를 import하고,SECRET_KEY와 DATABASES를 연결시킨다. M1을 위해 설치한 PyMYSQL을 추가한다.
from my_settings import SECRET_KEY, DATABASES import pymysql pymysql.install_as_MySQLdb() SECRET_KEY = SECRET_KEY DATABASES = DATABASES
✔️ 서버에 접근하는 IP 허용를 모두 허용시킨다.
ALLOWED_HOSTS = ['`*`'] 👈 IP 전부 허용
✔️ corsheaders를 설치해준다.
$ pip install django-cors-headers 👈 corsheaders
✔️ Application & MiddleWare를 설정해준다. Admin, CSRF, Auth는 주석하고, corsheaders를 추가한다.
DJANGO_APPS = [ # 'django.contrib.admin', # 👈 admin 기능 주석 # 'django.contrib.auth', # 👈 auth 기능 주석 "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ] PROJECT_APPS = [] THIRD_PARTY_APPS = [ "corsheaders", # 👈 corsheaders 앱 등록 ] INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS + THIRD_PARTY_APPS MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", # 'django.middleware.csrf.CsrfViewMiddleware', # 👈 csrf 기능 주석 # 'django.contrib.auth.middleware.AuthenticationMiddleware', # 👈 authentication 기능 주석 "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "corsheaders.middleware.CorsMiddleware", # 👈 corsheaderMiddleWare 등록 ]
✔️ settgins.py 최하단 부의 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', )
✔️ manage.py와 같은 계층에 .gitignore 파일을 생성한 뒤, python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh 등 기본적으로 필요한 내용을 "https://www.toptal.com/developers/gitignore" 에서 생성하여 붙여 넣는다.
✔️ 추가로 SECRET_KEY와 DATABASE 정보를 분리시켜 둔 python 파일을 .gitignore에 추가한다. formatter 때문에 .vscode와 toml 파일을 추가했다.
## my_settings.py my_settings.py ## .vscode .vscode/ ## convention control pyproject.toml
✔️ project 환경을 위해 설치한 프로그램들은 requirements.txt에 담아야한다. 단, 설치 시 자동으로 설치되는 프로그램들은 별도로 명시할 필요없다.
$ pip freeze > requirements.txt
✔️ 위 처럼 명령할 경우, 모든 프로그램이 파일에 담기기 때문에 불필요한 파일명들은 지워준다.
Django==3.2.8 django-cors-headers==3.10.0 mysqlclient==2.0.3 PyMySQL==1.0.2
✔️ 현재까지지 기본 초기 세팅에 문제가 없는지 중간 점검 한다.
$ python manage.py runserver 👈 서버 구동