|
|
18번째 줄: |
18번째 줄: |
| 프로젝트에서 깃을 이용하기 전에 처리해야 할 문제가 있다. | | 프로젝트에서 깃을 이용하기 전에 처리해야 할 문제가 있다. |
|
| |
|
| ==settings.py 분리==
| | <br /> |
| settings.py엔 비밀키, 이메일 비밀번호 따위가 들어가 있어 민감함 정보를 보호하지 못한다. 보호할 정보를 다른 파일로 만든 후 그걸 불러오는 방식으로 분리하거나 아예 다른 setting으로 실행하는 등 다양한 방법이 있는데(환경변수에 등록하기도 한다.), 여기에선 다른파일로 만든 후 불러오는 방식을 사용하겠다.(json파일로 만들어 불러오거나 환경변수에 값을 저장하는 등... 다양한 방법이 있다.)
| |
| | |
| ===공유되지 않는 보안용 파일 만들기===
| |
| 다양한 방법으로 보호되어야 할 정보를 따로 분리한 후 gitignore에 설정한다.
| |
| {| class="wikitable"
| |
| |+보호전략
| |
| !방법
| |
| !설명
| |
| !단점
| |
| |-
| |
| |라이브러리 활용
| |
| |pip install django-environ 설치 후 .env 파일을 작성해 보호할 정보를 저장한다.(django-environ 도큐먼트 참고)
| |
| settings.py에서 import os, environ으로 불러온 후, 보호된 정보를 활용한다.
| |
| | |
| 이후 .env를 gitignore에 담는다.
| |
| |굳이; 이렇게 복잡하게;;?
| |
| |-
| |
| |텍스트 파일 활용
| |
| |외부에 텍스트파일을 만들어 두고, 이를 읽어 비밀키 등에 대입.
| |
| |쓸 코드가 길어져;
| |
| |-
| |
| |.py 활용
| |
| |다른 파이썬 파일 안에 각종 정보를 담아두고 settings.py에서 import해 변수로 활용.
| |
| |
| |
| |-
| |
| |환경변수 활용
| |
| |감출 키를 환경변수에 등록하고 os.environ['환경변수'] 형태로 사용할 수도 있다.
| |
| |특수문자때문에 환경변수에 추가 안될 수도 있다.
| |
| |}
| |
| SECRET_KEY는 쿠키, 세션 같은 보안에 쓰여 외부에 노출되면 안되지만, 많은 이들이 그냥 github에 올려버리고 만다. 그런 경우, 다음 링크를 통해 새로운 키를 만들어보자. https://miniwebtool.com/django-secret-key-generator/
| |
| | |
| 필자는 setting.py와 같은 경로에 secret.py를 만들고 다음과 같이 변수를 정의하였다.<syntaxhighlight lang="python">
| |
| SECRET_KEY= '비밀키'
| |
| </syntaxhighlight>기존 변수와의 관계를 알기 쉽게 하기 위해 이름을 그대로 사용한다.
| |
| | |
| ===setting.py 변경===
| |
| secret.py를 import하고 해당 부분을 바꾸어준다.
| |
| | |
| + DEBUG모드를 False로 바꾸어준다.
| |
| | |
| + ALLOWED_HOSTS에 서비스하는 도메인을 추가해준다.<syntaxhighlight lang="python">
| |
| from . import secret
| |
| | |
| SECRET_KEY = secret.SECRET_KEY
| |
| | |
| ALLOWED_HOSTS = ['id8436.iptime.org', '127.0.0.1'] # 서버의 IP혹은 도메인을 입력해주어야 작동한다.
| |
| </syntaxhighlight>이외 이메일 비밀번호 등 필요하다 판단되는 변수들을 secret.py로 옮겨 정의한다. | |
|
| |
|
| ===.gitignore에 추가=== | | ===.gitignore에 추가=== |
104번째 줄: |
57번째 줄: |
| |}.gitignore에 <code>config/secret.py</code>를 추가한다. | | |}.gitignore에 <code>config/secret.py</code>를 추가한다. |
|
| |
|
| ==운영모드==
| | <br /> |
| DEBUG모드를 False로 바꾸어주어야 하는데, 개발컴에선 True로 되어 있어야 편하다. 때문에 새로운 파일을 만들어 settings.py의 내용을 그대로 쓰되, DEBUG값만 바꿔주어 서비스 하자.
| |
| | |
| <code>python3 manage.py runserver --settings=세팅파일명</code> 형태로 settings.py 대신 다른 파일을 사용할 수 있다.
| |
| | |
| service_settings.py 라는 이름으로 같은 경로에 다음과 같이 작성하였다.<syntaxhighlight lang="python">
| |
| from .settings import *
| |
| | |
| DEBUG = False # DEBUG=True이면 개발모드, False면 운영모드로 인식한다.
| |
| </syntaxhighlight><code>python3 manage.py runserver --settings=config.service_settings</code> 라는 명령어로 세팅파일을 바꾸어 실행할 수 있다.
| |
| | |
| 이렇게 하면 개발할 때엔 지금과 같은 <code>python3 manage.py runserver</code>명령으로 개발모드에 들어설 수 있다.
| |
|
| |
|
| =깃허브= | | =깃허브= |
장고! 웹 프레임워크! 틀:장고
- 장고:개요
- 장고:웹페이지설계
- 장고:앱
- 장고:url
- 장고:model
- 장고:DB
- 장고:모델 필드
- 장고:모델의 변경
- 장고:view
- 장고:클래스형 뷰, 제네릭 뷰
- 장고:view 각종 기능
- 장고:template
- 장고:static. 정적파일 사용하기
- 장고:CSS 사용하기
- 장고:JS 사용하기
- 장고:글꼴 사용
- 장고:부트스트랩
- 장고:media. 미디어 파일 사용하기
- 장고:관리자페이지
- 장고:settings.py
- 장고:기능구현
- 장고:회원관리
- 장고:유저
- 장고:커스텀 유저
- 장고:소셜로그인
- 장고:입력받기
- 장고:저장된 내용 활용하기
- 장고:변수 내보내기
- 장고:글쓰기
- 장고:페이징(페이지나누기)
- 장고:답변쓰기(댓글쓰기)
- 장고:추천,즐겨찾기
- 장고:새글(최신글) 나타내기
- 장고:썸머노트 설치
- 장고:네비게이션 바 만들기
- 장고:검색기능
- 장고:카테고리 만들기
- 장고:사진 올리기
- 장고:파일 업로드
- 장고:이메일app 만들기
- 장고:매직 그리드
- 장고:웹서비스
- 장고:Git
- 장고:리눅스에 올리기
- 장고:우분투에 올리기(nginx 사용)
- 장고:도커로 올리기
- 장고:팁
문제가 생겼을 때 등.. 버전관리 시스템을 이용하여 이전버전으로 돌려야 하는 상황이 자주 발생한다. 그 관리시스템 중 가장 유명한 것이 Git. 깃.
여기에선 깃에 올리는 것까지 다루고, 내려받은 이후의 이용은 각자의 문서에 올려두었으니 참고하자.
- 개발을 진행할 때 특정 기능을 구현했더니 중요한 다른 기능이 되지 않는 경우도 있다. 이럴 땐 다시 되돌려야 한다. 이를 위한 버전관리를 지원.
- 실제 서비스 기능 외에, 개발을 위한 브랜치(가지)버전을 만들어 따로 개발한 후 완성된 후 merge를 통해 개발내용을 서비스 기능과 합칠 수 있다.
- 팀 작업을 할 때 누가 어떤 작업을 했는지 파악할 수 있다.
다음 링크를 참조하자. 깃:기본 사용
프로젝트에서 깃을 이용하기 전에 처리해야 할 문제가 있다.
.gitignore에 추가[편집 | 원본 편집]
.gitignore작성
|
공유하지 않아도 되는 개발환경의 로그라든가, 가상환경이라든가 깃에 추가하지 않아도 될 것들이 있다.
혹은 올리지 말아야 할 것들이라든가. 이것들을 관리한다.
텍스트 파일 안에 git으로 관리하지 않을 디렉터리, 파일명을 한 줄씩 써 넣는다. DB도 배제했는데, DB도 함께 올릴거라면 빼준다.(db.sqlite3)
__pycache__: 해당 환경에서 사용한 캐시파일.
venv/: 가상환경.(사용자마다 파일명이 다를 수 있음.)
log: 해당 환경에서의 로그.
media/ : 미디어 파일은 git의 대상이 되지 않아야 한다.
migrations : DB수정파일. 굳이 개발컴퓨터와 서버가 동일할 이유가 없다. migrations/ 만 입력해주는데, 그렇게 해주어도 앱 하위의 폴더까지 추가된다.
다음 링크에서 편하게 만들 수 있다. https://www.toptal.com/developers/gitignore
|
.idea
db.sqlite3
*.pyc
__pycache__
logs
venv/
media/
위처럼 그냥 한 줄씩.
|
.gitignore에 config/secret.py
를 추가한다.
깃을 저장하는 가장 유명한 전략. 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 .
로 디렉터리를 추가해주어야 한다.(개고생했네;)
- 배포중인 경우, 서버를 재시작해주어야 변경내용이 적용된다.(개고생했네..)
- 21년 8월부터 비밀번호 대신 토큰을 입력한다. 기존 사용과 같이 하되, 비밀번호만 토큰으로 입력하면 된다.