장고:Git

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2020년 12월 9일 (수) 22:34 판 (→‎setting.py 변경)
둘러보기로 이동 검색으로 이동

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
  7. 장고:팁

개요

문제가 생겼을 때 등.. 버전관리 시스템을 이용하여 이전버전으로 돌려야 하는 상황이 자주 발생한다. 그 관리시스템 중 가장 유명한 것이 Git. 깃.

설치

검색해서 알아서;;

사용

과정 방법 설명
저장소만들기 가상환경 내에서, + 프로젝트 디렉토리에서.

git init

현재 디렉터리를 관리하겠다는 의미.

프로젝트/.git/ 디렉터리가 생성된다.
.gitignore작성 텍스트 파일 안에 git으로 관리하지 않을 디렉터리, 파일명을 한 줄씩 써 넣는다.

DB도 배제했는데, DB도 함께 올릴거라면 빼준다.

.idea

db.sqlite3

*.pyc

__pycache__

logs

위처럼 그냥 한 줄씩.

추가하기(저장) 프로젝트 디렉터리에서

git add -all .

현재 디렉터리 하위의 모든 파일들을 깃에 추가.
코멘트 달기 git commit -m "코멘트" 그냥 수행하면 이메일주소, 사용자명을 입력하라고 뜨니..

git config --global user.email "이메일주소"

git config --global user.name "이름"

을 써 넣자.

저장(한번에) git commit -a -a 옵션을 추가하면 git add를 하고 commit를 한다는 의미.
수정.

어떤 것이 바뀌었나?

git diff 변경된 부분을 알려준다.

다만, 한글부분이 깨질 때가 있는데, 그땐

set LC_ALL=C.UTF-8 을 프롬프트에 입력한다.

사전준비

깃허브를 이용하기 전에 처리해야 할 문제가 있다.

settings.py 분리

settings.py엔 비밀키, 이메일 비밀번호 따위가 들어가 있어 민감함 정보를 보호하지 못한다. 보호할 정보를 다른 파일로 만든 후 그걸 불러오는 방식으로 분리하거나 아예 다른 setting으로 실행하는 등 다양한 방법이 있는데(환경변수에 등록하기도 한다.), 여기에선 다른파일로 만든 후 불러오는 방식을 사용하겠다.(json파일로 만들어 불러오거나... 다양한 방법이 있다.)

공유되지 않는 보안용 파일 만들기

SECRET_KEY는 쿠키, 세션 같은 보안에 쓰여 외부에 노출되면 안되지만, 많은 이들이 그냥 github에 올려버리고 만다. 그런 경우, 다음 링크를 통해 새로운 키를 만들어보자. https://miniwebtool.com/django-secret-key-generator/

필자는 setting.py와 같은 경로에 secret.py를 만들고 다음과 같이 변수를 정의하였다.

SECRET_KEY= '비밀키'

기존 변수와의 관계를 알기 쉽게 하기 위해 이름을 그대로 사용한다.

setting.py 변경

secret.py를 import하고 해당 부분을 바꾸어준다.

+ DEBUG모드를 False로 바꾸어준다.

+ ALLOWED_HOSTS에 서비스하는 도메인을 추가해준다.

from . import secret

SECRET_KEY = secret.SECRET_KEY

ALLOWED_HOSTS = ['id8436.iptime.org', '127.0.0.1']  # 서버의 IP혹은 도메인을 입력해주어야 작동한다.

이외 이메일 비밀번호 등 필요하다 판단되는 변수들을 secret.py로 옮겨 정의한다.

.gitignore에 추가

.gitignore에 config/secret.py를 추가한다.

운영모드

DEBUG모드를 False로 바꾸어주어야 하는데, 개발컴에선 True로 되어 있어야 편하다. 때문에 새로운 파일을 만들어 settings.py의 내용을 그대로 쓰되, DEBUG값만 바꿔주어 서비스 하자.

python3 manage.py runserver --settings=세팅파일명 형태로 settings.py 대신 다른 파일을 사용할 수 있다.

service_settings.py 라는 이름으로 같은 경로에 다음과 같이 작성하였다.

from .settings import *

DEBUG = False  # DEBUG=True이면 개발모드, False면 운영모드로 인식한다.

python3 manage.py runserver --settings=config.service_settings 라는 명령어로 세팅파일을 바꾸어 실행할 수 있다.

이렇게 하면 개발할 때엔 지금과 같은 python3 manage.py runserver명령으로 개발모드에 들어설 수 있다.

깃허브

깃을 저장하는 가장 유명한 전략. MS에서 운영하며, 무료로 사용하더라도 공개방식을 취하면 제약이 전혀 없다.

사용

가입하고 나면 원격지 저장소의 url을 확인할 수 있다.

과정 방법 설명
원격저장소 연결 프로젝트 디렉터리에서

git remote add origin https://원격저장소주소

저장 git push 아이디와 비밀번호를 묻는데, 알아서 기입하면 됨.

이게 귀찮으면 git config credential.helper store 을 주면 인증절차 생략이 가능하다.

이후 저장이 잘 되었는지 확인해보자.

가져오기

git pull로 가져온다. 그러나, 두 사용자가 파일을 각각 변경시켰다면, 내용에서 충돌이 발생한다. 때문에 각각의 콘솔에서 git commit와 push를 해주지 않으면 해당 프로젝트를 삭제하고 다시 clone해서 가져오는 방식을 택한다.

앞으로의 사용

등록이 다 끝났다면... 앞으로 내용이 바뀔 때마다 간단하게 저장을 할 수 있다.

과정 방법 설명
저장(한번에) git commit -a -m "변경사항요약" -a 옵션을 추가하면 git add를 하고 commit를 한다는 의미.
저장 git push 깃허브로 보낸다.

유의

파일이 늘어나면 git add --all . 로 디렉터리를 추가해주어야 한다.(개고생했네;)