본문 바로가기
프로젝트

AWS EC2 인스턴스에 프로젝트 배포하기, PM2 사용하기

by 해룸 2024. 2. 2.

AWS EC2 Instance 생성

1. EC2 서비스에서 인스턴스 시작 클릭

2. Ubuntu, Ubuntu Server 22.04 KTS(HVM),  64비트 선택

3. EC2 인스턴스 유형: 프리티어 사용가능이라 적혀있는 t2.micro 타입 선택

4. keypair 이름 지정 및 다운로드: 키페어유형 RSA, 프라이빗 키 파일 형식 .pem

인스턴스 보안그룹에 들어가 인바운드 규칙편집까지 같이 해주기
규칙추가 > 사용자 지정 TCP, 포트범위 지정(내 Node.js 서버 포트번호), 소스는 Anywhere-IPv4

 

네트워크 설정 - 퍼블릭 IP 자동할당 비활성화 ★ ★ ★ ★ ★ ★

AWS EC2 접속하기

Window의 경우 git bash라는 프로그램으로 접속

1. 리눅스 명령어 사용해 키페어가 있는 위치로 이동

ssh -i 키페어이름.pem ubuntu@AWS에 적힌 퍼블릭 IPv4 주소

Key fingerprint 관련 메시지 나올경우 Yes 입력

Welcome to Ubuntu 라는 메시지와 함께 AWS EC2 접속 성공하게 된다.

 

☘ 간단한 리눅스 명령어

더보기

ls: 내 위치의 모든 파일을 보여준다.

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir [폴더 이름]: 내 위치 아래에 새 폴더를 만든다.

cd [폴더 이름]: 나를 해당 폴더로 이동시킨다.

cd .. : 나를 현재 위치의 상위 폴더로 이동시킨다.

cp -r [복사할 파일/폴더] [붙여넣기 할 위치]: 복사 붙여넣기

rm -rf [지울 파일/폴더]: 지우기 (이 명령은 매우 위험합니다. 신중히 사용해주세요!)

# 명령어 사용 당시에만 관리자 권한이 부여됩니다.

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.

# 명령어 사용 이후 모든 명령이 관리자 권한으로 실행됩니다.

sudo su: 관리자 권한이 있는 계정으로 접속한다. (exit 입력하면 관리자 계정에서 로그아웃)

2. AWS EC2 Node.js 설치

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

sudo apt-get install -y nodejs

Node.js v18을 설치해주는 명령어

# 설치된 Node.js 버전 확인하기
node -v

# 설치된 npm 버전 확인하기
npm -v

 

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

1. gitHub에 있는 Repository Clone 해오기

# 원격 저장소로 부터 코드 가져오기
git clone <Github Repository URL>

# 예시
git clone https://github.com/archepro84/nodejs-todo-list.git

2. 프로젝트 실행

1. `cd nodejs-todo-list` : 원격 저장소로부터 가져온 프로젝트로 이동합니다.
2. `sudo npm install -g yarn` : yarn을 사용하기 위해, 전역으로 yarn을 설치합니다.
3. `yarn` : 원격 저장소로 부터 가져온 프로젝트의 의존성 및 패키지를 설치합니다.
4. `node app.js` : 프로젝트를 실행합니다.

잠깐, 그 전에!!

만든 프로젝트에 .env파일이 있는경우에는 nano .env 를 통해 .env 파일을 만들어주고, 이전 프로젝트에서 env 파일 내용을 복사 붙여넣기 해준다. 그래야 프로그램이 돌아감~!

 

PM2로 서버실행하기

1. 관리자 계정으로 전환

# Linux의 관리자 계정으로 전환합니다.
sudo -s

2. yarn 으로 설치

# pm2 라이브러리를 global로 설치합니다.
yarn global add pm2

global 옵션은 특정 폴더나 프로젝트에 설치하겠다는것이 아닌 전역프로그램으로 설치하겠다는 의미이다.

 

3. pm2로 프로젝트 파일 실행

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

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

# Nest 프로젝트 실행하기
pm2 start npm --name "my-app-name" -- start

 

이전 프로젝트에서 배포를 한적 있음에도 불구하고 다시 해보려니 시간이 오래 걸렸다 ^^;

다시 헤매는 일 없게 기록해두자!