장고가 무슨 서버를 돌리냐 뭘 보여주냐로 집안 어르신이랑 싸우다가 문득 궁금해져서 찾아봤다.
아니 모르니까 배우지; 난 모른다고 했는데 왜 계속 나한테 물어보는 거임 자세히 나와있는 공식 문서나 볼 것이지 ㅡㅡ
우선 장고는 웹 프레임워크지 웹 서버가 아니다. 다시 말하면, 웹 개발을 쉽게 할 수 있도록 도와주는 도구일 뿐 장고만 사용해서 직접 웹을 돌릴 수는 없다는 말이다.
공식 문서를 찾아봤더니, 대부분의 웹 서버는 파이썬을 읽지 못하는 만큼, 장고와 웹 서버 사이를 이어주는 인터페이스를 통해 서버를 돌린다고 나와있다. 현재 장고는 WSGI 와 ASGI 를 통해 웹 서버를 돌릴 수 있다고 한다.
Django, being a web framework, needs a web server in order to operate. And since most web servers don’t natively speak Python, we need an interface to make that communication happen.
Django currently supports two interfaces: WSGI and ASGI.
우리는 보통 개발을 하고 서버를 실행해볼 때 이렇게 직접적인 웹서버가 아니라 runserver 을 사용하는데, 이는 장고의 manage.py 에서 볼 수 있다.
manage.py 의 함수를 쭉 따라가보면
여기 에서 아래와 같은 경고를 볼 수 있다.
"""
HTTP server that implements the Python WSGI protocol (PEP 333, rev 1.21).
Based on wsgiref.simple_server which is part of the standard library since 2.5.
This is a simple server for use in testing or debugging Django apps. It hasn't
been reviewed for security issues. DON'T USE IT FOR PRODUCTION USE!
"""
요약하자면 runserver 는 장고가 제공하는 테스팅용 경량 서버라 보안 설정 등이 되어있지 않으니, 서비스 시에는 제대로된 웹서버를 이용하라는 경고 문구이다.
장고의 전반적인 동작 원리에 대해서는 잘 나와있는 글이 있어 첨부한다.
https://live-jh.tistory.com/49
요약
1. 장고는 웹 프레임워크지 웹 서버가 아니다.
2. 개발을 할 때에는 테스팅용 경량 웹서버 runserver 로 동작한다.
3. 그러나 배포는 그걸로 하지 말자.
궁금증이 잘 해결됐네요~!