[AWS] nodejs 앱 EC2 RDS 사용 및 설명

정인교·2021년 7월 9일
0

Node.js

목록 보기
2/2
post-thumbnail

나중에 기억 안나면 한번 찾아봐야할 것 같아서 적습니다!

EC2

우선 EC2 서버를 하나 만들자.

  1. 인스턴스 시작

  2. 사용할 것 ami 선택. 보통 ubuntu나 amazon linux를 사용하는데, 저는 amazon linux를 사용하겠습니다.

  3. 프리티어 선택 후 넘어가기
    여긴 사실 검토 및 시작 버튼을 눌러도되고 다음을 눌러도 되는데 저는 검토 및 시작을 누르지만 여기는 요약하는 부분이라서 다음으로 넘어가서 하나하나 알아봅시다.

  4. 그냥 보고 넘어가기
    개념을 알기 위한 페이지로 사실 그냥 넘어가자. 인스턴스 개수는 크게 볼 필요는 없다. 실무에서 서비스 사용 시 사용하는 것이고 이 때 오토 스케일링이라는 개념이 나온다.

EC2 부가 설명

    1. Auto Scaling : 사용자의 요청에 따라 인스턴스를 늘리거나 크기를 키워주는 것으로, 최대, 최소, 일반을 설정할 수 있다. 맥스가 많으면 DDos시 서버는 꺼지지 않으나 비용이 굉장히 많이 들기에 맥스도 어느정도 설정을 해줘야한다. scale-in, scale-out, scale-up, scale-down 등이 있다.
    1. 스팟 인스턴스 : 실무에서 사용하는 것으로, 이는 서버를 사용하는 시간이 아닌 1년, 2년 등 기간을 잡고 기간에 대한 비용을 지불하는 것이다.
    1. VPC : 배정된 가상의 컴퓨터로 EC2 서버들이 들어와있고 EC2 서버는 안에서 통신이 가능하고 RDS도 NAT Gateway
    1. 서브넷 : 가용영역이란 AZ라고 불리며 region 안에 있는 작은 서버 하나를 불리는 말이다. 이를 자동 배정하거나 선택해서 할 수 있다. 아래의 사진은 우리 한국을 예로 들은 경우다.
    1. 퍼블릭 IP 자동 할당 : EIP라고 불리며 인스턴스가 중지될 때 퍼블릭 IP가 바뀌는 현상을 방지하기 위해 사용된다.
  1. 스토리지와 태그 단계는 다음으로 넘어가자.
  2. 추가를 해줘야하는 부분이다. 보안은 인바운드/아웃바운드 규칙이라고도 하며 쉽게 말하면 인바운드는 입력 아웃바운드는 출력할 수 있게 만들어주는 것이라고 생각하면 쉽다. 아래의 인바운드 규칙은 ssh에 접속할 수 있고 앱이나 웹에서 접근할 수 있게 만들어주는 것이다. 대부분의 AWS 통신 에러는 여기서 발생하니 꼭 확인해주자.

    이후 검토 및 시작을 눌러 서버가 생성될 때까지 기다린다.

EC2 SSH 접속

푸티를 사용하면 키 페어 변환하고 IP 주소 수정하고 들어가서 ec2-user를 입력해야하지만 AWS에서 지원하는 연결로 들어가면 힘들게 하지 않아도된다!

자, 이제 원래 있던 node.js를 가지고와야하는데, 기본 설정들을 설치해줘야한다.
node를 설치하려면 nvm을 활성화해야하는데 아래의 명령어를 차근차근 입력해주자. (출처: AWS 공식문서)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node

그리고 git을 이용하여 프로젝트를 가져와야하기때문에 sudo yum install git을 이용하여 다운받고 mysql에 접속하여 rds를 확인할 것이기에 먼저 sudo yum install mysql을 적어주자.

이후, git clone [github url]을 이용하여 코드를 가져오자.
파일에 들어가서 .env파일을 만들어주고 npm i를 해주자.

사용되는 명령어

RDS

생성 시 시간이 오래걸리기때문에 생성해주자.

각 빨간 동그라미들을 설정해주고 RDS를 생성해주자.

이 때 저 1번이 .env에서의 DB_HOST가 되겠다.

인바운드 및 아웃바운드 설정을 해줘야한다. 인바운드 규칙을 누르고 edit해주자.
로컬로 돌릴 것이니 보안 걱정 없이 어디든지로 모두 설정해주자.
아웃바운드도 똑같이 설정해주자.

이제 mysql을 이용하여 RDS에 접속해보자.
mysql -u [마스터 이름] -p -h [RDS 인스턴스 엔드포인트]
쿼리문을 이용하여 env파일의 DB_NAME과 같은 이름의 스키마를 만들고 서버를 작동시키면
정상적으로 작동하는 모습을 확인할 수 있다.

PM2

이제 프론트엔드 개발자가 개발을 해야할 때 서버의 요청을 얻기 위해선 서버를 항상 켜둬야하는데 이 때 백그라운드 서버 실행을 도와주는 PM2다.

npm install -g pm2@latest
pm2 start app.js

를 사용하면 아래와 같은 status를 볼 수 있다.

사용 명령어

내가 주로 볼 명령어들이다. 기억 안날 때마다 들어와서 명령어만 보고 나올 생각이다.

nodejs 설치

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node

mysql, git

yum -y install nodejs -찾아봤는데 안되면 다시 삭제
sudo yum mysql rds접속 시 사용
sudo yum install git
git clone [github url]

mysql -u [마스터 이름] -p -h [RDS 인스턴스 엔드포인트]

pm2

npm install -g pm2@latest
pm2 start app.js

pm2 status
pm2 start app.js 
pm2 list 
pm2 delete [프로세스id]

마무리

쓰면서 느끼는데 내가 어제 한 배포를 그대로 하는 것도 사진 찍고 글 쓰면서 하기가 쉽지 않다.. 2시간 정도의 일이였고 복습 차원의 용도에서 정말 큰 도움이 된 것 같다.

+ 추가

sudo yum install curl
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs
profile
백엔드 개발자 정인교입니다!

0개의 댓글