Project/[Project] Red Horse

[Backend] 프로젝트 환경셋팅

bonevillain 2023. 6. 12. 19:49

프로젝트 폴더 생성

$ mkdir redhorse
$ cd redhorse

 

 

가상환경 생성 및 활성화

$ virtualenv venv
$ . venv/bin/activate

이 프로젝트에서는 가상환경을 virtualenv로 사용하였습니다. 패키지 의존성 + 가상환경까지 관리 및 셋팅할 수 있는 pipenv 또는 poetry 사용을 고민했으나 virtualenv만 익숙하신 분들도 있기 때문에 virtualenv만을 사용하였습니다.

 

 

Django 설치 및 프로젝트 생성

$ pip install django
$ django-admin startproject redhorse .

 

 

django-extensions 설치

$ pip install django-extensions

저는 두 가지를 목적으로 사용하였습니다.

1. 스크립트 파일 실행 용도

  • 사전에 필요한 Profile의 옵션값(취미 리스트, MBTI 리스트)들을 OptionCode 테이블에 넣어주는 스크립트, 즉 프로젝트 운영을 위한 기본 데이터를 넣어주는 스크립트 실행
  • 테스트를 위한 가짜 데이터들을 넣어주는 스크립트

위 두 가지 스크립트를 실행시켜줄 때 runscript 명령어를 사용하여 사용합니다.

$ python manage.py runscript 파일명.py

 

2. 파이썬 쉘 실행

장고에서 기본으로 사용하는 'python manage.py shell' 쉘 실행은 환경변수 셋팅만 해주고 나머지 필요한 부분은 직접 import 해주어야합니다. 특히 쉘 실행을 종료했다가 다시 실행하면 처음 상태로 초기화되기 때문에 또다시 import를 해줘야합니다. 그러나 shell_plus 명령어를 이용하면 프로젝트에 있는 기본 모델들 및 모델 관련 쿼리 라이브러리 등을 자동으로 import 해줘서 너무 편해서 좋은 것 같습니다.

$ python manage.py shell_plus



settings 파일 변경

settings 파일 변경 전과 후

생성된 순수 django 프로젝트에서 약간 변형을 주었습니다. 배포 환경에 따라 셋팅 값을 달리줘야하니 저는 settings 폴더를 만들어주고 그 안에 base, local, dev, prod를 만들었습니다.

 

base는 공통적으로 적용되는 셋팅값(ex: BASE_DIR)을 넣어주고 local, dev, prod에는 각자 개별적으로 적용되는 셋팅값(대표적으로 DB 설정)을 넣어주었습니다.

 

추가로 Cookiecutter와 같은 패키지를 이용하여 프로젝트를 구성할 수도 있는데 저는 저 settings 구성을 제외하고는 순수 그대로 사용하였습니다.

 

 

환경변수 관리 패키지 설치 및 .env 파일 생성

$ pip install django-environ
$ touch .env



기타 설치 파일

Django REST Framework

$ pip install djangorestframework
$ pip install markdown
$ pip install django-filter

 

Simple JWT (JSON 토큰 로그인)

$ pip install djangorestframework-simplejwt

 

Pillow (업로드된 프로필 이미지 변환 과정에 사용)

$ pip install Pillow

 

django-cors-headers (Frontend 연동을 위한 패키지)

$ pip install django-cors-headers

 

Pusher (실시간 채팅을 위한 Pusher 서비스 패키지)

$ pip install pusher

 

jsonschema (JSONField 스키마 작업을 위한 패키지)

$ pip install jsonschema

 

Factory Boy (테스트를 위한 모델 데이터 생성에 도움)

$ pip install factory_boy

 

'Project > [Project] Red Horse' 카테고리의 다른 글

[Backend] 정리 - 1  (0) 2023.06.13
[Backend] env 환경변수  (0) 2023.06.12
[Backend] API 설계  (0) 2023.06.09
[Backend] DB 설계  (4) 2023.06.08
[Backend] 화면 설계  (0) 2023.06.06