Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 650
  • 2573314
DNS Powered by DNSEver.com
Python

[Django Tutorial] 8. Production - setting.py설정, Static파일 모으기

Posted 2015. 09. 21 Updated 2017. 06. 16 Views 5005 Replies 0

Django를 활용해 사이트를 완성했으면, 실제 운영용 서버에 올려서 서비스를 시작하는 Production 과정을 거쳐야 합니다. 이 과정은 디버깅을 위해 사용했던 기능들을 끄고 여러 모듈에 분산되어 있는 Static파일들을 한 데 모아 통합 디렉토리로 만들어 주는 과정을 포함합니다.

지난번 실습까지 구현한 내용을 확인하는 데 개발용 서버 데몬인 runserver를 사용했었습니다. 이 runserver 데몬은 Shell에서 간편하게 사용할 수 있지만, 실제 운용 서버에서 사용하기에는 적합하지 않습니다. 개발과정에서만 사용하기 위해 설계되었기 때문에 최적화가 되어 있지 있고, 무엇보다도 보안과 관련된 고려가 전혀 되어 있지 않습니다.
일례로, Static파일을 찾는 과정만 보더라도 순차적으로 모든 모듈의 디렉토리를 뒤져서 찾기 때문에 극히 비효율적임을 알 수 있습니다.

Django 공식 매뉴얼에서도 다음과 같이 대문자로 강조해 가면서 runserver를 실제 운영에서 사용하지 말라고 강려ㅋ하게 강조하고 있습니다.

DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or performance tests. (And that’s how it’s gonna stay. We’re in the business of making Web frameworks, not Web servers, so improving this server to be able to handle a production environment is outside the scope of Django.)

따라서, Production에서는 runserver 대신 WSGI데몬의 도움을 받아서 Apache나 Nginx와 같은 웹 서버와 연동해야 합니다.

이 글에서는 웹 서버 연동 이전에 Django프로젝트에서 해 줘야 할 사전 작업들을 먼저 다루고, WSGI 연동은 다음 글에서 다루도록 하겠습니다.

 

설치한 패키지 목록 저장하기

다음 명령으로 VirtualEnv 샌드박스내에 설치한 의존성 패키지들의 목록을 저장한 requirements.txt파일을 작성합니다. 이렇게 의존성 패키지 목록을 작성해 두어야 다른 시스템으로 프로젝트 디렉토리를 옮긴 뒤에도 의존성 패키지 목록을 다시 쉽게 설치할 수 있습니다.

(venv)$ pip freeze > requirements.txt

참고로, requirements.txt파일로부터 의존성 패키지를 모두 설치하는 명령은 다음과 같습니다.

(venv)$ pip install -r requirements.txt

 

Debug모드 끄기

sitebase/settings.py파일의 DEBUG변수를 False로 바꿔 줍니다. 이렇게 함으로써 내부적으로 오류가 발생했을 때 디버깅 페이지를 표시하지 않도록 합니다.

DEBUG = False

 

접속 허용 호스트명 등록하기

XSS공격 등에 대비하기 위해 접속을 허용할 호스트명을 별도로 명시해 줘야 합니다. sitebase/settings.py파일의 ALLOWED_HOSTS목록에 운용 서버에서 사용할 Host이름을 등록해 줍니다. IP주소와 도메인 모두 사용할 수 있습니다.

ALLOWED_HOSTS = [ u'192.168.0.100', u'localhost', u'tuwlab.com' ]

여기에 등록되지 않은 호스트명으로 요청이 들어올 경우 400 Bad Request Error를 반환합니다.

 

Static파일 경로 설정 및 통합 디렉토리 만들기

역시 sitebase/settings.py파일의 STATIC_ROOT변수에 Static파일들을 모을 디렉토리 경로를 지정합니다.

STATIC_ROOT = '/var/www/static_myproject'

그리고 다음과 같이 collectstatic명령을 실행해 줍니다. 정말 복사를 할 것인지 묻는 확인 메시지가 뜰텐데, 여기에 yes를 입력하면 프로젝트에 포함된 모든 모듈의 Static파일들을 모두 일괄적으로 복사합니다.

(venv)$ ./manage.py collectstatic

이렇게 하면 통합 디렉토리가 생성되므로 Static파일들에 대한 요청은 모두 웹 서버단에서 /var/www/static_myproject 디렉토리로 연결하여 처리할 수 있게 됩니다.

 

이제 Django프로젝트 내에서 Production을 위한 준비는 모두 끝냈습니다. 이어지는 글에서는 각각 Nginx+uWSGI조합으로 웹 서버와 연동하는 방법에 대해 다루도록 하겠습니다.

 

서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
193 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2018.11.21 234026
192 XE Social XE 트위터 프로필사진 표시 문제 해결하기 3 file TUW 2017.06.02 205146
191 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 1 file TUW 2019.10.02 180530
190 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2018.06.13 166249
189 Linux Windows 및 Linux 클라이언트에서 SSH 자동 로그인 설정하기 file TUW 2018.07.22 134992
188 Linux Root권한 없이 Wireshark 사용하기 file TUW 2017.06.02 108832
187 일반 영어로 나타낸 수학 용어 모음 2 file TUW 2018.01.08 82426
186 일반 [Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령 2 file TUW 2019.10.21 72755
185 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2019.04.28 64544
184 AVR [AVR 강의] AVR 강의용 예제 프로그램 모음 file TUW 2017.06.02 63291
183 일반 Windows에서 포트 포워딩(Port Forwarding) 설정하기 - Netsh TUW 2018.02.03 61603
182 Linux Ubuntu에서 PATH 설정하기 TUW 2014.04.20 60824
181 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 51401
180 일반 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 5 TUW 2019.08.19 48890
179 일반 [GIT] Branch 관리하기: branch, checkout, push, pull 2 TUW 2018.02.03 48376
178 일반 신호 레벨 변환 회로(Level Transceiver/Translator/Shifter) 설계 file TUW 2021.12.28 47891
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5