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