Skip to content
TUWLAB.com
TUW
조회 수 983 댓글 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
번호 분류 제목 글쓴이 최근 수정일 조회 수
176 XE Social XE 트위터 프로필사진 표시 문제 해결하기 3 file TUW 2014.04.23 202343
175 AVR [AVR 강의] AVR 강의용 예제 프로그램 모음 file TUW 2014.04.19 61670
174 Linux 좀 더 '진짜같이' VirtualBox 활용하기 - 심리스 모드 외 file TUW 2014.04.20 31321
173 AVR [AVR 강의] AVR 강의자료 - 5. 아날로그-디지털 변환기(ADC) file TUW 2014.04.19 29764
172 Android 루팅 응용 : 스마트폰 카메라 셔터음 없애기 file TUW 2014.04.23 28267
171 Linux Ubuntu에서 PATH 설정하기 TUW 2014.04.20 27862
170 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2016.07.18 27030
169 Linux Windows에서 Ubuntu로 원격 데스크톱 연결하기 TUW 2014.04.20 26250
168 일반 Windows 7에서 보호된 노트북 복구파티션 삭제하기 file TUW 2014.04.23 25840
167 일반 [사설 클라우드 구축] 자동 동기화 설정 (FreeFileSync) 2 file TUW 2016.11.30 25407
166 Android 루팅 응용 : 스마트폰 부팅화면 커스터마이징 4 file TUW 2016.01.04 23896
165 Linux SCP명령어 - 초간단 파일/디렉토리 전송 TUW 2014.04.23 22604
164 AVR [AVR 강의] AVR 강의자료 - 4. 타이머/카운터, PWM 3 file TUW 2015.03.17 21395
163 Linux Ubuntu에 GITLAB 설치하기 A to Z, Apache 연동 file TUW 2014.04.24 21322
162 Linux Windows 및 Linux 클라이언트에서 SSH 자동 로그인 설정하기 file TUW 2016.01.11 20883
161 Android 삼성 스마트폰 루팅하기 file TUW 2014.04.23 20804
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 11 Next
/ 11

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5