배포 자료

Summer Bootcamp AWS 배포 자료 _ by judy

Overview

What is Cloud Computing ?

  • IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말합니다.

  • 물리적 데이터 센터와 서버를 구입, 소유 및 유지 관리하는 대신, 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스할 수 있습니다.

  • AWS, GCP, Azure 등이 있습니다 .

Advantages of cloud computing

  • 민첩성

  • 탄력성

  • 비용 절감

  • 몊 분 만에 전 세계에 배포 (지리적 리전으로 확장)

⇒ 효율적

Types of Cloud Computing

  • IaaS (Infrastructure as a Service)

  • PaaS (Platform as a Service)

  • SaaS (Software as a Service)

https://www.redhat.com/ko/topics/cloud-computing/iaas-vs-paas-vs-saas

Top 4 AWS Services

  1. Amazon EC2 (Elastic Compute Cloud)

  2. Amazon RDS (Relational Database Services)

  3. Amazon S3 (Simple Storage Service)

  4. Amazon Lambda

Setup and requirements

AWS 계정 생성

IAM 사용자 생성

Simple Deployment with AWS EC2

Task 1. Create EC2 instance

Connect to console

Start Instance

Start setting

Add Name and Tag

Application & OS Image (AMI)

Create Key

☄️ 절대 노출 금지

Network settings

Storage setting

✨ 넉넉하게 설정해주면 나중에 메모리 부족으로 인한 에러 해결하는 시간을 단축할 수 있음

Finish !!!

Verify

Task 2. Create Elastic IP

Task 3. Connect to EC2 instance

Task 4. EC2 setting

Install and start docker

sudo yum update

# Install docker
sudo yum install docker

# Install docker-compose 
sudo curl -L <https://github.com/docker/compose/releases/latest/download/docker-compose-$>(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

# Fix permissions
sudo chmod +x /usr/local/bin/docker-compose

# Create symbolic link
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# Add user to group so we can use commands without sudo
# (+ Login again, to apply changes)
sudo usermod -a -G docker ec2-user

# Start docker
sudo service docker start

# Verify the installation
docker -v
docker-compose -v

Install nvm, Nodejs and Yarn

# install nvm
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh> | bash

# Activate nvm
. ~/.nvm/nvm.sh

#Install Node.js
nvm install --lts

# Install yarn
curl -o- -L <https://yarnpkg.com/install.sh> | bash

# Reload the bash profile
source ~/.bashrc

Install git

# Install git
sudo yum install -y git

Task 5. Clone sample project

sample app

# Clone your repo
git clone <link-to-your-repo>
## e.g git clone --recursive <https://github.com/litsynp/docker-example.git>

project directory structure

 ls
backend             docker-compose.yml          nginx
frontend            docker-compose.prod.yml     settins

Task 6. Additional Settings

환경 변수 및 시크릿 설정

IP setting (sample app 기준)

  • localhost고정IP 주소로 수정

  • .env 파일 DJANGO_ALLOWED_HOSTS 에 고정IP 추가

  • REACT_APP_BACKEND_URL 수정

  • 설정에 따라 필요한 값들 수정

Additional settings

  • docker-compose build 후 makemigrateions, migrate, dollectstatic, loaddata 순서대로 설정

Task 7. Run docker-compose

docker-compose -f docker-compose.prod.yml up -d --build

Task 8. Verify

고정 IP로 접근하여 확인

Create domain with AWS Route 53

Task 1. Register domain

Finish register domain !

Task 2. Create Record

도메인 이름과 IP 주소 연결

레코드 생성

이제 www.judyyy.com 으로 접속 해보자

‼️ 데이터가 사라졌다

Task 3. Domain settings

sample app 에서 다음과 같은 항목들을 업데이트 해준다.

  • .env 파일 DJANGO_ALLOWED_HOSTS 에 도메인 주소 추가

    • ex. domain.kr www.domain.kr 둘 다 필요

  • nginx.conflisten 8080 아래에 server_name

    • ex. domain.kr www.domain.kr; 둘 다 넣어줘야함

  • REACT_APP_BACKEND_URL 수정

다시 접속해보자 !!

🙌🏻 🙌🏻 🙌🏻

Trouble Shooting

✔️ No space left on device on my EC2 AWS Instance

✔️ docker-compose INTERNAL ERROR: cannot create temporary directory

✔️ 메모리 부족 현상을 해결하기 위한 Swap memory 설정

$ sudo dd if=/dev/zero of=/swapfile bs=1K count=16M
# (1K * 16M = 16 GiB)

✔️ .pem 파일로 vscode에서 Remote SSH 설정 _ mac

✔️ .pem 파일로 vscode에서 Remote SSH 설정 _ window 10

✔️ vscode 코드 저장 오류

vscode에서 ssh로 연결 후 코드 수정 및 저장 시 (NoPermissions (FileSystemError): Error: EACCES: permission denied, open ~) 오류 나면, /home 에서

sudo chown -R $USER 디렉토리경로

✔️ vscode 도커 확장 프로그램 설치 오류: Error: connect EACCES /var/run/docker.sock 해결하기

sudo chmod 777 /var/run/docker.sock

✔️ npm install 중 오류: JavaScript heap out of memory

node --max-old-space-size=8000 $(which npm) install # npm install 실행

Reference

Notion ver.

rimages

Last updated