=================================
요약
컴퓨팅 : AWS EC2
OS : Linux Ubuntu
웹 서버 : Nginx
WSGI 서버 : Gunicorn
WSGI 애플리케이션 : Django
=================================
1. 필요성
개발환경에서는 장고 자체적으로 내장된 기능인 'runserver'를 사용한다.
개발중에는 바로바로 확인할 수 있어 편리하지만,(localhost에서는 개발자 개인의 요청만 처리하면 되니까)
실제 운영하고 사용하는데 있어서는 다수 사용자의 요청을 처리하는데 효율적이지 못하다.
2. 이론
- 웹 페이지는 크게 정적페이지(static)와 동적페이지(dynamic)로 구분해서 동작한다.
// static
장고 프로젝트에서 static파일로 관리한 CSS, JS, IMG파일 등
개발 당시에 정해지고 사용자의 의지가 반영되지 않는 파일들이 속한다.
(페이지라고 했지만 사실 파일이라고 보는게 맞는듯하다.)
// dynamic
사용자의 요청에 따라 다른 결과를 보여주는 페이지.
오늘 날짜의 기사를 조회하면 해당하는 기사들로 목록이 바뀌는 등
사용자가 어떤 요청을 보냈는가에 따라 개발자가 처리한 가공과정을 거쳐 만들어지는 페이지이다.
- 이 정적요청과 동적요청을 처리해주는게 웹 서버이며
장고에는 Nginx를 사용한다. (Java는 Apache를 사용한다)
그런데 정적요청의 경우, 파일들을 그대로 읽어오기 때문에 간단한 반면
동적요청은 파이썬 프로그램을 호출해야 하기 때문에
웹서버 단독으로는 동작하지 않는다.(웹서버에는 파이썬프로그램을 호출하는 기능이 없다)
대신 동적요청이 발생할 경우 웹서버는 WSGI서버를 호출하여 WSGI서버가 대신 처리하게 된다.
(위스키라고 읽는다)
- WSGI서버 중 uwsgi와 gunicorn가 일반적으로 많이 쓰인다.
사용자가 브라우저를 통해 동적요청을 하면
웹서버가 요청을 받아 WSGI서버를 호출하고
WSGI서버는 다시 WSGI애플리케이션을 호출한다.
최종적으로 동적요청을 받아 파이썬프로그램을 실행시켜 처리하는 작업은
WSGI애플리케이션에서 담당한다. (Django, Flask, Tornado 등이 wsgi애플리케이션에 해당된다)
3. 순서
1) 서버용으로 사용할 컴퓨터 준비
2) 컴퓨터 OS 설치
3) 프로젝트 파일 이전, 가상환경 구성
4) WSGI 서버(gunicorn) 설치, 프로젝트 연결
5) 웹 서버(Nginx) 설치, 프로젝트 연결
==============================================
Jump to Django등 자세하게 설명된 블로그가 많았는데
과정 중 발생한 에러들과 대처법을 기록해둬야겠다는 생각이 들어서
정리하게 되었다.
참고 페이지
점프투장고 - https://wikidocs.net/75557
웹서버(Nginx)에서 정적요청처리 - https://velog.io/@sa833591/AWS-EC2-Nginx-%EB%B0%B0%ED%8F%AC403-forbidden-%EC%A3%BC%EC%9D%98
이 403 forbidden에서 5시간을 헤매었다...
분명 static 디렉토리가 잡혀있는데 접근할 수 없다고 떠서 하...sa833591님 감사합니다
'개발 > Django' 카테고리의 다른 글
00 정리필요 (0) | 2021.08.27 |
---|---|
02 django 설정 (0) | 2021.08.24 |
01 프로젝트 기획 (0) | 2021.08.24 |