배포를 위한 Django 파일 분기하기
2017-02-14
참고 : Ask Django
Page not found 404 에러를 띄워줄 html 페이지를 만듭니다. 잘못된 url로 접근했을 때, 노란색 장고 에러메시지보다는 404 페이지를 띄우는게 좋습니다. 어떤 404 페이지는 간단한 html 게임을 넣기도 합니다.
404.html
파일을 만듭니다.django shortcuts
의 get_object_or_404
를 이용합니다.from django.shortcuts import redirect, render, get_object_or_404
def post_detail(request, post_pk):
post = get_object_or_404(Post, pk=post_pk)
settings.py
의 내용을 개발 버전 설정과 배포 버전 설정으로 나눠줍니다.
settings
라는 디렉토리를 만듭니다.__init__.py
를 만들어줍니다.common.py
와 이를 import 하는 dev.py
, prod.py
로 나눠줍니다.원래 있던 settings.py
의 내용을 common.py
로 복사하고 디렉토리 경로를 한 depth 깊게 설정합니다.
BASE_DIR = dirname(dirname(dirname(os.path.abspath(__file__))))
import os
from .common import *
DEBUG = False
ALLOWED_HOSTS = ['\*']
STATIC_ROOT = os.path.join(BASE_DIR, "..", "staticfiles")
MEDIA_ROOT = os.path.join(BASE_DIR, "..", "media")
DATABASES = { 'default': {
'ENGINE': 'django.db.backends.postgresql', 'NAME': 'ubuntu',
'USER': 'ubuntu',
'PASSWORD': 'password',
'HOST': '127.0.0.1', },
}
개발에서만 사용하는 패키지(크롤링할 때 필요한 패키지 등)와 실 서버에서 사용될 패키지를 분기해줍니다. 서버에 올릴 때에는 후자만 설치해줍니다.
requirements
디렉토리를 만듭니다.common.txt
, dev.txt
, prod.txt
로 나눠서 저장합니다.wsgi.py
는 사용자가 서비스(?)로 진입하는 지점입니다. 이 파일에서 아래와 같이 <project-name>.settings
부분을 수정해줍니다. 설정 파일을 찾는 경로를 수정해주는 것인데, 원래 있었던 /<project-name>/settings.py
가 아니라 settings 디렉토리 아래의 prod.py 를 실행하라는 의미입니다.
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<project-name>.settings.prod")
같은 방법으로 manage.py
파일에서 <project-name>.settings.dev
로 수정해줍니다.
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<project-name>.settings.dev")
Let's code like a girl!