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
python manage.py runserver --settings=session.settings.local 으로 따로 settings 지정해주기
manage.py: 여기서 자동으로 지정해줄 수 있음
wsgi.py
환경변수 설정
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 저장 후 종료