CS Activity/Likelion 11th

[멋쟁이사자처럼 11기] 9회차: AWS 배포

Jenn28 2023. 5. 18. 20:14

Web

- HTTP: 웹에서 서버와 클라이언트 사이에서 어떻게 메세지를 교환할지 정해 놓은 규칙

- URL: 특정 사이트에 접속하기 위한 주소

- HTML: 내용

 

Web Server

- 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템 -> 인터넷 기반

 

Django 는 Web Server 인가? -> NO!

Django 는 Web Application ! -> 웹에서 실행되는 응용 프로그램

 

Clients -> Web Server -> Web Application -> DataBase Server

 


 

실습

 

1. settings.py 가 있는 곳에 settings 폴더 생성 -> settings.py 폴더에 넣어주기

2. __init__.py 생성

3. settings.py 를 base.py로 이름 변경

4. local.py 와 production.py 생성

 

local.py / production.py 파일에서 from .base import * 써주기

 

base.py의 DEBUG / ALLOWED_HOSTS 지우고,

local.py / production.py 에 옮겨 붙여넣기

-> DEBUG = False / ALLOWED_HOSTS = ["*"] 로 수정

-> local.py 의 DEBUG = True 유지 !

 

False로 바꿔줘야 하는 이유는?

- Not Found 페이지만 뜰 수 있도록 설정

- 외부에서 사이트 접속 시 민감한 정보를 보이지 않게 하기 위해

 

STATIC_ROOT / MEDIA_ROOT 지우고,

production.py 에 옮겨 붙여넣기

 

base.py

parent.parent.parent 부모 폴더의 폴더의 폴더

 

python manage.py runserver --settings=session.settings.local 으로 따로 settings 지정해주기

 

manage.py: 여기서 자동으로 지정해줄 수 있음

session.settings.local

 

wsgi.py

session.settings.production

 


 

환경변수 설정

 

manage.py 에 import dotenv 해준 후 main 함수 안에 dotenv.read_dotenv() 써주기

 

wsgi.py 에 import dotenv 해준 후

dotenv.read_dotenv(os.path.join(os.path.dirname(os.path.dirname(__file__)), '.env'))

 

manage.py 있는 곳에 .env 파일 만들기

-> .env 는 꼭 gitignore 넣어주기 !

 

.env

SECRET_KEY = 'django-insecure-z&aqr60=*i1@n+b)_15g*uso@hvzbnhfvlg8%biv0g1y9z-1nh'

 

base.py: .env 파일로 옮기고 base.py 에서는 get 으로 받아줌 -> 동시에 import os 해주기 !

SECRET_KEY = os.environ.get("SECRET_KEY")

 

Terminal 에서 runserver 할 때는,

python manage.py runserver --settings=session.settings.production 설정 따로 해줘야함

 


 

AWS 란?

 

- On-premise: 서버 환경을 직접 구축하는 것

ex) 원룸에 던져놓고 피자 먹어 했을 때 만드는 것

- Off-premise: 어느정도 제공

ex) 냉동 피자를 사서 원룸에서 돌려 먹기만 하면 되는 것

 

클라우드 컴퓨팅 -> Off-premise 방법 사용

 

- IaaS: 자유도 (운영체제 자유 구성, 커스터마이징 가능)

ex) AWS EC2, GCP GCE, Azure

 

- PaaS: 비교적 자유롭지 않음

ex) Heroku, Firebase, AWS Elastic Beanstalk

 

- SaaS: 소프트웨어 웹에서 사용하기만 하면 됨

ex) Gmail, Dropbox, Zoom, Slack

 

왜 AWS 사용하는가?

스타트업 입장에서 봤을 때, 사용자에 따라 조정해줄 수 있음

 


실습

 

AWS EC2 인스턴스: 가상의 서버 컴퓨터를 대여 받은 것

ec2 -> 인스턴스 -> 인스턴스 시작

 

키 페어 생성 -> 절대로 유출하면 안됨

- 윈도우 사용시 .ppk 선택

 

탄력적 IP 사용해서 중지하고 다시 켰을 때 동일한 IP 주소 가질 수 있음

 


 

인스턴스 접속

 

Ubuntu 자체 업데이트:

sudo apt-get update

sudo apt-get upgrade

 

Ubuntu 계정의 비밀번호 설정:

sudo passwd ubuntu

 

Nginx 웹 서버 설치:

sudo apt-get install -y nginx

 

보안 그룹: 인스턴스에 대한 트래픽을 제어하는 가상 방화벽 

인바운드 규칙: 해당 서버로 들어오는 것들에 대한 방화벽

 

보안 -> 보안 그룹 -> 인바운드 규칙 편집 -> HTTP -> 0000 설정하면 아무나 접속 가능

 


 

 

esc -> :wq 저장 후 종료