본문 바로가기
TIL

[TIL] AWS EC2로 배포하기

by 쾌횽 2024. 1. 23.
반응형

 

노드 입문 주차에 들어서 개인과제를 완성하고 AWS EC2를 이용해 배포를 하였다. 그 과정을 작성하려한다.

위에있는 인스턴스 시작을 눌러 새로운 인스턴스를 생성해 준다.

ubuntu로 설정해주고 프리티어가 있는 설정들로 세팅해준다.

새로운 키 페어를 생성해주면 해당 폴더에 .pem(.cer)이라는 키 페어가 생겼을 것이다.

 

🧐 AWS EC2에 접속하기 

다운 받은 키페어 접근 권한을 바꿔줘야한다.

터미널을 열고 

cd download
sudo chmod 400 test.cer

 

 

SSH로 접속하기

ssh -i 받은 키페어 ubuntu@AWS에 적힌 내 아이피
ssh -i test.cer ubuntu@13.209.41.102

그러면 이렇게 접속이 완료된다.

그 다음으로 EC2 인스턴스에 Node.js를 설치해야한다.

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt-get install -y nodejs

어느 정도의 시간이 흐른뒤에 설치된 버전을 확인하려면 node -v 명령어로 확인 가능하다.

 

🧐 서버 프로그램 실행 및 웹 사이트 접속

깃허브에 있는 우리의 프로젝트를 클론해야한다.

프로젝트를 실행하기 위해 다음 순서로 작업한다.

  1.  cd <프로젝트 명>
  2. sudo npm install -g yarn : yarn을 사용하기 위해 전역적으로 설치해 준다.
  3. yarn : 원격 저장소로부터 가져온 프로젝트의 의존성 및 패키지를 설치
  4. node app.js : 프로젝트를 실행

노드로 app.js를 실행 했는데 환경변수 gitinore파일에 있는 .env파일의 내용들이 불러오지 못하여서 에러가 발생 한것 같다.

우분투안에서 .env를 다시 설치해야한다.

방법은 두가지가 있다.

  1.  nano .env 사용
nano .env

 

기존에 있던 .env의 내용을 그대로 옮겨준다.

저장하고 나온다 : ^x(ctrl + x) 누르기 => y 누르기 => 엔터

그리고 다시 node app.js 명령어를 치면

정상적으로 에러없이 서버가 실행된다.

 

2. cat > .env 사용

cat > .env

이후 방법은 위와 동일하다.

 

prisma 설치

npx prisma generate

 

🧐 영원히 꺼지지 않는 서버 실행 프로그램, PM2

우리는 EC2인스턴스에 ssh 명령어로 접속한 상태이다. 이 접속이 끊기는 순간 웹 사이트의 접속은 불가능해 진다.

서버 컴퓨터는 항상 켜져 있어야 들어오는 요청을 처리하고 응답을 보낼 수 있기 때문에 항상 서버가 돌아가야 한다. 어떻게 이런 문제를 해결 할 수 있을까?

Node.js를 실행하고 관리하도록 만들어진 PM2를 이용해 문제를 해결 할 것이다.

PM2는 프로세스 매니징 도구로 Node.js를 편하게 관리할 수 있게 도와주는 라이브러리이다.

터미널을 종료하더라도 웹 서버가 실행될 수 있게 하거나 log정보들을 실시산으로 확인하여 현제 서버의 상황을 더욱 빠르고 명확하게 관리할 수 있다.

 

PM2설치

# Linux의 관리자 계정으로 전환
sudo -s

# pm2 라이브러리를 global로 설치
yarn global add pm2

 

pm2로 app.js실행

# pm2로 app.js파일을 실행
pm2 start app.js

 

 

pm2로 app.js 실행 종료

# pm2의 id가 0인 프로세스를 종료한다.
pm2 delete 0

 

🧐 인바운드 규칙 변경

통신이 가능한 IP를 가진 모든 기기는 포트(Port)라고 불리우는 데이터가 드나들 수 있는 통로가 있다.

우리가 작업한 포트를 다른 사람들이 자유롭게 드나들 수 있게 하려면 인바운 규칙을 이용해 작업한 포트의 번호에 맞춰 다시 설정해 주어야한다.

EC2 인스턴스에있는 보안 버튼을 클릭하고 인바운드 큐칙 편집으로 들어간다.

규칙 추가를 눌러 우리의 포트 번호를 적고 소스는 Anywhere-IPv4를 설정해준다.

 

배포한 우리의 작업물

 

퍼블릭 IPv4주소를 입력하고  :PORT번호를 입력하면 우리가 작업한 결과물이 배포된 것을 볼 수 있다.

 

반응형

'TIL' 카테고리의 다른 글

[TIL] SQL과 종류  (0) 2024.01.25
[TIL] 관계형 데이터 베이스 (RDB)  (0) 2024.01.24
[TIL] 웹과 HTTP의 동작 방식  (0) 2024.01.18
[TIL] 비동기 프로그래밍  (0) 2024.01.17
[TIL] 영화 검색 사이트 팀 프로젝트 회고  (0) 2024.01.16

댓글