본문 바로가기

개발/Django

211208_서버 배포_0

=================================

요약

컴퓨팅 : 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

 

4-03 서버

여러분이 제작한 파이보 서비스를 누구나 사용할 수 있도록 하려면 다른 사람이 인터넷으로 파이보 서비스에 접속할 수 있도록 만들어야 한다. 그런데 그렇게 하려면 1년 365일 ...

wikidocs.net

웹서버(Nginx)에서 정적요청처리 - https://velog.io/@sa833591/AWS-EC2-Nginx-%EB%B0%B0%ED%8F%AC403-forbidden-%EC%A3%BC%EC%9D%98

 

[Nginx] 배포시 403 forbidden 주의

Nginx Server 배포Nginx서버 설치 후 프로젝트 파일.html파일에 접근하는 방법 기술sudo find / -name nginx.conf/etc/nginx/nginx.confnginx.conf를 보면 아래의 default.conf 파일은 include 되어있

velog.io

이 403 forbidden에서 5시간을 헤매었다...

분명 static 디렉토리가 잡혀있는데 접근할 수 없다고 떠서 하...sa833591님 감사합니다

'개발 > Django' 카테고리의 다른 글

00 정리필요  (0) 2021.08.27
02 django 설정  (0) 2021.08.24
01 프로젝트 기획  (0) 2021.08.24