Q. Linux가 뭐예요? Ubuntu가 뭐예요?
이걸 알기전에 운영체제(Operation System)에 대해서 알 필요가 있어.
[운영체제]
: 컴퓨터 시스템의 각종 하드웨어,소프트웨어 자원을 효율적으로 운영,관리 함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 시스템 소프트웨어야.
→ 핵심 목적 : 사용자가 편리하고 효율적인 방식으로 프로그램을 실행하는 환경을 제공하는데 있어.
[커널]
: 컴퓨터 운영체제의 핵심이 되는 컴퓨터 프로그램의 하나. 시스템의 모든것을 완전히 통제해. 보안,자원관리,추상화 역할
■ 운영체제 = 사용자 영역 + 커널 영역
■ 리눅스에서 작동하는 여러 종류의 프로그램을 꾸러미 하나로 모아놓은 것 = Linux 배포판
→ Ubuntu는 상호작용이 잘되는 Linux 배포판 중에 하나
■ 리눅스는 커널이고, 이러한 리눅스 커널을 기반으로 운영체제가 만들어졌다. 배포판.
Q. NGINX, WSGI 는 뭐고 왜 필요한건가요?
[웹 서버] web server
■ 웹 페이지를 클라이언트로 전달. 주로 정적컨텐츠를 전달한다.
[웹 어플리케이션 서버(WAS)] web application server
■ 동적 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버(db 조회, 로직처리)
■ 웹서버+컨테이너 = WAS
Q. WAS 만 사용해도 되는거 아니야?
■ 아니! , was의 역할은 db조회 및 로직 처리하게 두고, 정적인 컨텐츠를 웹서버에 맡기고 기능을 분리하는것이 서버부하를 방지하고 효율을 높일 수 있어
uwsgi, gunicorn
■ WSGI 규칙을 따라 만들어진 소프트웨어. 정적인 웹서버(Apache,Nginx) 와 python으로 작성된 웹프레임워크(Django)사이의 통신을 도와주는 역할
■ nginx는 python을 모르기 때문에 gunicorn을 통해 http request를 python으로, django로 부터 받은 응답을 nginx가 알 수 있도록 변환해줌!
WSGI(Web Server Gateway Interface)
■ 파이썬 어플리케이션이 웹 서버와 통신하기 위한 명세.프레임워크의 웹 서버로 파이썬 스크립트가 웹 서버와 통신하도록 도와주며 웹 서버와 웹 애플리케이션 사이에 위치한다.
Nginx 쓰면 좋은 점!
■ 도메인 라우팅 관리, 정적 파일 제공, 한번에 들어오는 많은 요청 처리, 느린 클라이언트 처리, 동적 요청을 wsgi에 전달, ssl(HTTPS),컴퓨터 리소스 절약, 로드밸런싱, 캐싱
WSGI 기능
■ 작업자 프로세스,스레드 풀 실행 , NGINX에서 들어오는 요청을 WSGI와 호환되도록 번역
■ 앱의 WSGI 응답을 적절한 HTTP 응답으로 변환
Q. HTTP → HTTPS 어디에 무슨 설정을 해야 하나요?
[문제 상황]
■ AWS의 Elastic Load Balancing 설정으로 해서 적용이 되지 않았음.
[해결]
■ Nginx의 웹서버 설정을 바꿔줌
#80번 포트로 전달되는 http 요청을 https 요청으로 변환
server {
listen 80;
server_name cameet.site;
rewrite ^ https://$server_name$request_uri? permanent;
}
#웹서버에서 발급받은 보안인증서를 토대로 https 세팅
server {
listen 443 ssl;
server_name cameet.site;
charset utf-8;
(ssl 세팅)
(경로 세팅)
}
'프로젝트 > 창업 프로젝트 (DRF + AWS)' 카테고리의 다른 글
[OAuth 2.0]구글 소셜 로그인(feat. React & django rest framework) (0) | 2022.09.21 |
---|---|
[점검] 프로젝트 피드백, 단기 목표 설정 (0) | 2022.09.06 |
[프로젝트][에러][uWSGI] 클라이언트 연결 닫음 [해결] (0) | 2022.08.29 |
[회고][Django][DRF][RestAPI] 아이디어 '캐밋'을 구현하며 (4) | 2022.08.23 |
[JWT 인증] 토큰은 어디에 담겨있나요? (0) | 2022.07.29 |