배포 자료
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)
Top 4 AWS Services
Amazon EC2 (Elastic Compute Cloud)
Amazon RDS (Relational Database Services)
Amazon S3 (Simple Storage Service)
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.conf
에listen 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)
오류:
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
https://github.com/Stadicus/RaspiBolt/issues/37
$ sudo chmod 0600 /swapfile
✔️ .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