127.0.0.1로 테스트를 했다고 하면 이제 다른 사람이 내 웹 사이트에 접속할 수 있도록 하는 것을 배포한다고 합니다. 그런데 그러기 전에 장고에서 설정을 해 주어야 합니다.
1. 배포
[1] 개발환경 : 프로그램 성능은 낮더라도 개발 생상성에 집중한다.
특징 : 파이썬 소스파일에서 소스 코드 변경시, 개발서버가 자동 재시작 합니다.
static/media 파일을 장고에서 직접 서빙 지원
오류 발생시, 오류정보 직접 노출
[2] 서비스 서버환경 : 프로램 성능을 최적화 합니다.
특징 : 소스코드가 변경되더라도 개발서버가 자동 재시작 되지 안흔다.
static/media 팡리은 장고에서 직접 서빙하지 않는다. 이는 외부 웹 서버에 맡겨야 한다.
오류가 발생하더라도 오류 정보를 직접 노출되지 않는다.
2. 서비스 환경에서 추가로 세팅하는 것들
- settings.DEBUG = False
이 옵션 켜두면, 메모리에 SQL쿼리 실행내력이 계속 쌓이게 된다. 이렇게 메모리가 부족하게 되면 서비스가 불가능하게 된다.
이 옵션을 켜두면, 오류 발생시 유저에게 불필요하게 서버정보가 제공된다.
- 별도 static/media 세팅
AWS를 쓴다면 AWS S3를 사용한다.
- 별도의 데이터베이스 서버를 세팅한다.
보통 Django를 쓴다면 MySQL, MariaDB를 쓴다.
3. / 주소를 다른 경로로 redirect를 시켜야 한다.
# 프로젝트/views.py
from django.shortcuts import redirect
def root(request):
return redirect('blog:index')
# 프로젝트/urls.py
from .views import root
urlpattens = [
url(r'^$', root, name='root')
]
4. 404예외처리
- 404 예외는 page not found 없는 파일 경로가 나올 때 뜨는 예외이다.
- django.views.defaults.page_not_found 뷰에서 처리한다.
- settings.DEBUG= True 설정에서는 노란바탕의 예외 정보가 나온다.
- settings.DEBUG = False 설정에서는 404.html 있다면 404.html이 나온다. 없다면 장고에서 기본 설정된 페이지가 나온다.
5. 500예외
- django.views.defaults.server_error 뷰에서 치한다.
- 404예외처리와 마찬가지로 settings.DEBUG =True 환경에서는 노란바탕의 예외 정보가 나온다.
- 500.html 템플렛이 있을 경우 500.html이 실행되고, False일 경우 기본 설정된 단순한 랜더링이 나온다.
6. settings.STATICFILES_DIRS 설정 확인
- settings.STATICFILES_DIRS에 명시된 디렉토리는 반드시 존재해야 한다. 없다면 ptrhon3 manage.py collectstatic 명령이 실패한다.
- 단 git에서는 빈 디렉토리는 버전관리 대상에 넣지 않는다. 그래서 로컬 개발환경에서 존재했더라도, 비어있다면 버전 관리에서 제외되어 배포 서버 상에서는 해당 디렉토리가 존재하지 않게 된다. 그래서 SATICFILES_DIRS에 지정된 디렉토리에는 최사한의 1개의 파일이라도 넣어야 한다.
# settings
STATICFULES_DIRS = [
os.path.join(BASE_DIR, 'iSeed', ''static')
]
7. requirements.txt 설정하기
- 프로젝트 세팅할 때마다 팩키지를 일일이 설치하는 번거롭고, 빼 먹을 가능성이 있다. 따라서 requirements.txt를 만들어서 설치할 팩키지 목록을 파일 1개를 통해 공급받을 수 있다.
[requirements.txt 예시]
django>=1.10.6
django-debug-toolbar
django-extensions
django-bootstrap3
이렇게 작성하고 실제로 서버에서 팩키지를 설정할 때
pip install -r requiremenets.txt
명령어를 입력하면 requirements.txt에 있는 팩키지가 한번에 설치된다.
(다른 디렉토리, 파일명이어도 상관은 없다.)
'Web > Django' 카테고리의 다른 글
☁ Auzer를 이용하여 Django 배포하기 - [1부] (0) | 2019.08.26 |
---|---|
[Django 오류]django.db.migrations.exceptions.InconsistentMigrationHistory: 오류 발생시 (2) | 2017.08.06 |
[Django]장고 디버그 툴 (0) | 2017.08.04 |
[Django]url (0) | 2017.08.03 |
Django와 Apache2연결하기 (0) | 2017.07.31 |