기타

Node.js 프로젝트 수동 배포

jaee 2023. 3. 27. 10:52

 

수동 배포하는 나의 모습

 

배포 자동화 전까지는 개인 프로젝트에서 수동 배포를 몇 번 반복해야 할 듯하여 기록해 놓는다.

 

 

1. EC2 서버 생성 및 환경 설정

# 운영체제에서 사용 가능한 패키지 정보 업데이트
$ sudo apt-get update

# 노드 버전 관리자(nvm) 설치
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

# nvm 활성화
$ . ~/.nvm/nvm.sh

# node 특정버전 설치
$ nvm install <노드 버전>
# node lts 버전 설치할 경우
$ nvm install --lts

# 노드 설치 및 실행 여부 확인
$ node -e "console.log('Running Node.js ' + process.version)"

 

2. EC2 서버 인바운드 규칙 수정

 

3. Local 환경에서 node 프로젝트 빌드

$ npm run build

 

4. pacakge.json 파일과 빌드된 dist 폴더를 원격 서버(EC2)로 전송

# dist 폴더 옮기기
$ scp -i "<pem key 경로>" -r "<dist 폴더 절대 경로>" <계정>@<타겟서버 IP>:<폴더 옮길 경로>

# package.json 파일 옮기기
$ scp -i "<pem key 경로>" "<package.json 파일 경로>" <계정>@<타겟서버 IP>:<파일 옮길 경로>

# 디버깅 모드는 option -vvv 붙여서 실행 
# ex)scp -vvv -i ~

scp는 ssh 기반으로 port 기본값이 22번이다. 만약 다른 포트 번호를 이용해 파일 전송을 하고 싶다면 -P옵션을 이용해 실행하면 된다.

 

5. 원격 서버에 접속하여 package.json에 명시된 패키지 설치

# 원격 서버 접속
$ ssh -i "<pem key 절대경로>" <계정>@<원격서버 주소>

# package.json 파일이 있는 경로로 이동하여 패키지 설치
$ npm install


6. (생략 가능) 원격 서버에서 node 프로세스가 정상적으로 실행될 수 있는지 확인

# 실행해보고 별다른 에러가 없다면 프로세스 종료한다.
# 참고로 루트 파일은 dist 폴더 내에 있다.
$ node <루트 파일>

패키지 설치가 잘못되었다던가 등의 문제로 node 프로세스가 동작하지 않을 수 있다. 이 때문에 개인적으로는 프로세스를 실행시키고 확인하는 편인데 이 과정은 생략해도 무방하다.

 

7. node 프로세스 백그라운드 실행

# forever 패키지 설치
npm install forever -g

# node 프로세스 시작
forever start <루트 파일>
# ex) forever start main.js

# 프로세스 확인
forever list

 

 

 

추가적으로 알아볼 것

  • nginx 설치 및 설정
  • forever, pm2, nodemon 비교

 


참고 자료