멋쟁이 사자처럼 at 한국교통대학교 7기

2019 KNUT X LIKE LION #7

소스 제어

토픽 멋쟁이 사자처럼 at 한국교통대학교 7기 > 생산성

개요

 GitHub에 푸시하기 전 확인해야 할 사항 및 Git 초기화 과정을 설명합니다.

.gitignore

 .gitignore는 파일 이름입니다. 이 파일은 Git 커밋 예외를 지정하기 위해 사용됩니다. 특정 파일 및 디렉터리들을 이 파일에 기록하므로써 Git은 해당 파일 및 디렉터리들을 추적하지 않습니다. 프로젝트 루트 폴더에 .gitignore 파일을 생성합니다.

 제외할 파일 및 디렉터리들을 한 줄 씩 입력합니다. 디렉터리는 끝에 슬래쉬(/)를 붙히며, 와일드카드(*) 또한 지원됩니다.

가상환경 폴더(venv)

 Python 가상환경은 각 프로젝트마다 Python 모듈 및 라이브러리의 버전을 독립적으로 유지하기 위해 필요한 환경입니다. 또한 운영체제 마다 가상환경 폴더의 구성이 다르므로 OS 독립성을 유지하기 위해서 가상환경 폴더를 Git 소스 제어에서 제외시켜야 합니다.

venv/

 하지만 단순히 가상환경 폴더를 Git에서 제외시키면 다른 개발 환경에서 소스를 다운로드 받아 작업할 때, 새로 Python 모듈 및 라이브러리를 설치해야 합니다. 이 과정을 편하게 진행하기 위해 현재 가상환경에 설치된 모듈 목록을 텍스트 파일로 추출해야 합니다. 터미널에서 아래 명령을 실행합니다.

pip freeze > requirements.txt

 pip는 Python의 패키지 매니저입니다. freeze 명령은 현재 가상환경에 설치된 Python 패키지 목록을 추출합니다. > 기호는 콘솔 리다이렉션 기능인데 콘솔 화면에 그 목록을 출력하는 대신 requirements.txt 파일로 저장합니다.

settings.py

 프로젝트 폴더 안에 있는 settings.py 파일을 보면 SECRET_KEY 변수가 존재합니다. 키의 값은 프로젝트가 생성될 때마다 랜덤으로 할당됩니다.

SECRET_KEY = 'v$$%pk2m=fo-!f8n5(u)p55r3s=g0(ul&#-j%o!w9f%2-$dx&='

 이 키는 django 내에서 로그인과 같은 세션을 유지하고, 비밀번호 생성, 쿠키, 암호화 서명 등에 사용되는 키입니다. 이 키 값을 공격자가 탈취하면 서비스의 암호화된 로직이나 데이터에 접근할 가능성을 크게 열어줍니다. 그러므로 이 키를 소스 제어에 포함시키거나 커밋시키지 않도록 해야 합니다.

 이미 소스 제어에 커밋된 상태라면 Django Secret Key Generator 도구를 이용해 새 키 값을 배포해야 합니다.

 몇 가지 SECRET_KEY를 소스 제어에서 제외시키는 방법들이 존재합니다. 가장 간단한 방법은 이 settings.py 파일 자체를 소스 제어에서 제외시키고 이 파일은 따로 보관하는 것입니다.

<MY-PROJECT-DIRECTORY>/settings.py

PyCharm 설정 폴더

 PyCharm의 Project 탐색기에서는 안보이지만 PyCharm 프로젝트의 설정들을 저장하는 .idea라는 폴더가 생성됩니다. 상단의 Project 모드를 Project Files 모드로 바꾸어주면 프로젝트 루트 폴더의 실제 폴더 및 파일 구조가 나타납니다. 이 폴더 또한 모두 제외시켜도 상관없으나, 프로젝트 설정들을 보존하고 싶다면 특정 파일들을 제외하고 포함시켜도 됩니다. 자세한 정보는 JetBrains 기술문서를 참조하십시오.

 이 예제에서는 .idea 폴더를 모두 제외시키겠습니다.

.idea/

데이터베이스

 실제 데이터가 들어있는 데이터베이스 파일은 필요없으므로 제외시켜야 합니다.

db.sqlite3

기타

 각종 로그 파일 및 임시파일을 제외시킵니다.

*.log
*.pot
*.pyc
__pycache__/

 최종적인 .gitignore 파일 내용은 다음과 같습니다.

venv/
.idea/
db.sqlite3
<MY-PROJECT-DIRECTORY>/settings.py

# temporary files
*.log
*.pot
*.pyc
__pycache__/
 gitignore 목록을 자동으로 생성해주는 사이트도 있습니다. gitignore.iogitignore.io/api/django,pycharm

Git 초기화

 PyCharm 메뉴 VCS -> Enable Version Control Integration... 을 열고 Git을 선택합니다.

 프로젝트 탐색기의 파일/폴더에 색상이 적용되었습니다.

  • 흰색: 변경 사항이 없는 파일
  • 빨간색: Git이 추적하지 않는 파일
  • 노란색: gitignore에 의해 제외된 파일/폴더
  • 초록색: 새로 생성된 파일
  • 파란색: 마지막 커밋 이후 변경된 파일

 이제 Git에 프로젝트 파일/폴더를 모두 추가시킵니다.

커밋[Ctrl K]

푸시[Ctrl Shift K]

 처음 푸시를 한다면 어디에 푸시를 할 것인지 지정해야 합니다. 푸시하고 풀하려는 원격지를 Git에서는 Remote라 합니다. VCS -> Git -> Remotes...에서 레포지토리 주소를 입력합니다.

클론

 VCS -> Git -> Clone... 또는 PyCharm 첫 화면에서 클론 항목을 찾을 수 있습니다.

 클론 후 처음 해야 할 일은 보안 상 제외시켰던 settings.py 파일을 프로젝트 폴더 안으로 가져오는 것입니다. 그리고 나서 이 프로젝트가 django 프로젝트라는 것을 PyCharm에게 알려야 합니다. (.idea 폴더를 제외시켰으니...)

 PyCharm 환경설정[Ctrl Alt S]에서 Languages & Frameworks -> Django로 이동한 후 Settings 항목에 settings.py 파일을 지정합니다.

 그리고 Python Template Languages로 이동해 Django를 선택합니다.

 이제 Python 가상환경을 생성해야 합니다. PyCharm 환경설정에서 Project: <PROJECT-NAME> -> Project Interpreter로 이동한 후 톱니바퀴 버튼을 클릭 -> Add...에서 새 가상환경을 생성합니다. 이제 환경설정을 닫고 requirements.txt 파일을 열면 PyCharm이 자동으로 설치해주려고 하네요.

댓글

댓글 본문