django를 다른 웹서버에 의존하여 돌리기
블로그가 이사를 갔어요!
죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브
얼마 전부터 작은 오픈소스 프로젝트를 하나 (업무로써) 진행하고 있는데, 공부도 할 겸, 프로젝트의 웹 부분을 Django 프레임웍을 사용하여 작성하고 있다. django는 뭐랄까... 아쉽게도 ruby on rails를 처음 접했을 때 만큼의 감동은 없는데, 나름대로 단순한 면도 있고 쓸만 하다는 느낌이다. (MVC 관점이 좀 애매하기는 하다.) 1
그러던 어느 날, 문제가 생겼다! 그것도 하필 중간 점검을 코앞에 두고 말이다. (항상 "밀려 하는 숙제" 스타일이 문제다.) 잘 동작할 것으로 예상했던 부분이 안돌아 가는데, 곰곰히 생각해보니... nested request! 이것이 문제였다. 문제의 부분은 사용자-시스템 간의 요청 처리 내부에 시스템-시스템 간의 요청이 하나의 단계로써 포함되어 있었던 것이다. 다시 말해서, 사용자의 요청(ㄱ)을 완료하기 위해서는 내부적으로 또 하나의 웹 요청(ㄴ)이 발생하게 되는데, 그것(ㄴ)이 처리 지연에 빠지는 현상이 발생했다. 처리 지연에 빠지는 이유는 바로 앞 선 요청(ㄱ)에 의하여, 이 요청의 수행이 끝날 때 까지 웹서버의 동작이 Blocking 되어 있었던 것. 데드락이다. (ㄱ)은 (ㄴ)의 수행이 필요한데 (ㄴ)이 수행되기 위해서는 (ㄱ)이 먼저 끝나줘야 하는 것. ... 지금껏 잘 사용해오던 django의 내장 (test용) 서버가 다중 요청을 지원하지 않는 것이다. (이 부분은 좀 더 확인이 필요하다.) 2
사실, 처음부터 내 잘못이다. django의 문서를 보면 명시적으로, "이 기능은 실무 환경을 위한 것이 아니에요. 우린 웹 개발 프레임웍을 만드는 중이지 웹서버는 관심이 없답니다."라고 말하고 있다. 어쨌든, 다음의 연결은 이와 관련하여 django를 다른 전문 웹서버와 연결하는 방식을 설명하고 있다. (이 부분도 rails에 비해서 좀 떨어지게 느껴지는, 또는 낯설은 부분 중 하나다.)
관심있는 구성 중 하나는 경량 웹서버인 nginx를 이용하는 방법. 다음은 우분투 문서 중, byteflow blog 엔진 설치, 그 중 django(FastCGI) + nginx 구성의 설명이다.
byteflow blog engine - Ubuntu Wiki
Byteflow is a blog engine, written on Python, using Django. Why should you choose it over competitors? It has very clean codebase and developers, which are struggling to keep it so. It has a lot of cool features, which you can't get in other blog engines or will get with difficulty (consider feed by union of tags, eh?).Installation — Byteflow v0.0 documentation
# Ubuntu + nginx + FastCGI installation guide on Ubuntu wiki
# Debian + apache2 + mod_python. Installation and setup guides by Oleg Leschinsky.
# lighttpd + fastcgi installation guide from Benjamin Smith
# Installing byteflow on dreamhost by William Stearns
# ByteFlow on CentOS 5 with Apache, mod_wsgi and MySQL by Michal Ludvig
django 공식 문서. 일단은 공식 문서의 apache+django(fastcgi mode) 방식을 적용하여 문제(다중 요청 처리)를 해결했다. 이렇게 단순 간단한 것을... 처음엔 원인을 떠올리지 못하고 심지어는 별도 Job Queuing 모듈까지 만들었다는...
Django | Deploying Django | Django Documentation
Django’s chock-full of shortcuts to make web developer’s lives easier, but all those tools are of no use if you can’t easily deploy your sites. Since Django’s inception, ease of deployment has been a major goal. There’s a number of good ways to easily deploy Django:
교훈:
- "밀린 숙제 방법론"을 버려라
- "실전을 통한 학습"은 허상이다.
- 문서와 저자의 의도를 받아들여라.
- 뭔가 분명히 있다. 만들기 전에 다시 한 번.
'개발' 카테고리의 다른 글
프로젝트 관리: 서브버전 저장소 사본 만들기, svnsync (0) | 2008.04.09 |
---|---|
남에게 일을 주었다. 언제 검수해야 하는가? (0) | 2007.11.21 |
"The Power of Code Review" (0) | 2007.05.21 |