[Django] 장고 프로젝트 초기 설정 및 MySQL 연동하기

[Ted's Log] 테드로그·2021년 8월 25일
4
post-thumbnail

👋   장고 프로젝트 세팅하기 및 MySQL 연동

  이번 포스팅에서는 백엔드 서버로 작동하게 될 장고 프로젝트를 생성하고 난 후, 초기 설정 및 MySQL 연동하는 내용에 대해서 다루어 보겠다. 가장 우선적으로 진행할 내용은 프로젝트마다 패키지를 독립적으로 관리하고 사용하기 위해서 가상환경을 생성하는 내용이다. 파이썬 프로젝트에서 가상환경 관리를 제공하는 여러 툴들이 있지만 anaconda를 활용해서 진행해보겠다.
  가상환경 설정을 마쳤다면, 프로젝트에서 활용할 MySQL 데이터베이스를 로컬 서버에 생성해주자. 데이터베이스 생성 시 MySQL의 기본 chracter set은 영미권 국가를 기준으로 latin어로 지정되어 있어, 아시아 국가 언어에서 문자 인코딩 작업 시 오류가 발생할 수 있다. 따라서 utf8로 변경해주는 것이 필요하다. 최근에는 이모지를 사용하는 경우가 많아 utf8mb4를 많이 사용한다.
   데이터베이스를 만들었다면 프로젝트에 필요한 장고 프레임워크와 MySQL 서버와의 연결을 도와주는 mysqlclient 패키지를 설치해주자. M1 맥북을 사용하고 있는 개발자라면 mysqlclient를 사용하기 위해서 추가적인 작업이 필요한데, 해당 내용은 장고 프로젝트 세팅 파일 수정할 때 다루겠다.
  장고 프로젝트를 시작할 준비가 되었으니 명령어를 통해서 파일을 생성해보자. 이 때 입력한 명칭으로 폴더 구조가 이중으로 되어있는 프로젝트 파일이 생성되는데 django-admin startproject example_project . 명령어를 사용한다면 이중 구조가 아닌 하나의 계층 구조로 파일을 생성할 수 있다.


🔐   Setting 내용 외부로의 유출 방지하기

  장고 프로젝트를 생성하게 되면 프로젝트 설정에 대한 정보가 settings.py안에 작성된다. 보틍 프로젝트 소스코드의 버전 관리를 하기 위해서 Github에 저장소를 올리게 되는데, settings.py 내용 중에서 외부로 그대로 유출이 되면 안되는 것들이 있다. 따라서 중요 정보는 새로운 파일을 생성해서 저장한 뒤에 .gitignore를 이용해서 원격 저장소에 업로드 되지 않도록 해야 한다. 실습은 my_settings.py 파일을 생성해서 진행해보겠다.
   my_settings.py을 생성하고 데이터베이스와 시크릿 키에 대한 정보를 옮겼다면, 이 내용을 settings.py에 적용시켜주는 작업을 진행해보자.
  앞서 MySQL을 장고와 연동시켜주기 위한 패키지로 mysqlclient를 설치했다. 현재 정확한 이유는 파악이 되지 않지만, 모델 파일 작성 후 마이그레이션을 진행하려고 하면 오류가 발생하는 것을 확인할 수 있었다. 해결 방법을 찾아보니 PyMySQL 패키지를 추가적으로 설치하고 import하는 작업이 필요했다. pip install PyMySQL 명령어를 통해서 가상환경에 패키지를 설치하고 난 후 아래의 코드를 settings.py에 추가해주자
  초기 설정과 MySQL 연동까지 끝냈다면 나의 작업 내용을 깃헙 저장소에 연동할 준비를 마친 것이다. 그전에 앞서 설정 내용에서 보안이 중요한 부분은 my_settings.py로 따로 관리를 해놓았기 때문에 깃 저장소에 올라가지 않도록 해야 한다. 따라서 .gitignore 파일을 생성한 후 my_settings.py를 추가해놓아야지 비로소 모든 과정을 마무리했다고 할 수 있다.


😎   Conclusion

 생각외로 프로젝트 설정하는 과정이 설치해야 할 패키지도 많고 간단하지만은 않았지만, 프로젝트에 있어 보안의 중요성에 대해 생각하는 계기가 되었다. 물론 이번에는 설정 정보를 파일을 분리해서 유출하지 않는 내용이었지만, 모든 보안 요소의 기초가 되는 과정이라고 생각한다. 좋은 백엔드 개발자가 되기 위해서는 좋은 코드를 만드는 것은 물론, 외부로부터의 위협을 이겨내는 능력이 필요한 것 같다. 고객들의 소중한 개인 정보 및 데이터를 지켜내야할 책임의식을 백엔드 개발자로서 지녀야겠다.

profile
성장하는 개발자가 되기 위한 발자취 🧑🏻‍💻

0개의 댓글