서버에서 노드 프로그램 서버 구성 메뉴얼 on redgoose note

서버에서 노드 프로그램 서버 구성 메뉴얼

Nest: Development Category: Server 2021-12-30

git 설치

sudo yum update -y
sudo yum upgrade -y
sudo yum install git -y

nvm 설치

nvm은 node 프로그램을 관리합니다.
모든 파일들은 ~/.nvm 영역에 설치되기 때문에 root 권한을 사용할 필요가 없는 특징을 가지고 있습니다.

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

설치하고나서 nvm 명령어를 실행하면 실행이 안되니 exit로 나갔다가 다시 접속하면 실행 가능합니다.

node 14 설치

nvm install 14
# 만약 다른 버전이 설치되어있다면..
nvm use 14

pm2 설치

pm2는 노드 서버들을 관리하는 툴입니다.
다음과 같이 설치할 수 있습니다.

npm install pm2 -g

pm2에 노드 서버들을 등록을 끝냈으면 저장을 해둡니다. pm2 저장을 하면 서버가 껏다 켜졌을때 그 생태로 복구됩니다.

# pm2 상태 저장하기. 서버가 껏다 켜졌을때 그 생태로 복구됩니다.
pm2 save

# node 서버목록
pm2 list

# pm2 서버 시작하기
pm2 start {NUM|NAME}

# pm2 서버 재시작
pm2 restart {NUM|NAME}

# pm2 서버 정지
pm2 stop {NUM|NAME}

# pm2 서버 전부 열거나 닫거나 재시작
pm2 start all
pm2 stop all
pm2 restart all

# pm2 실시간 모니터링
pm2 monit

pm2 의 로그파일은 ~/.pm2/logs에 저장됩니다.

pablo-draw 프로젝트 클론 및 빌드

먼저 deploy key 를 만들어 인증없이 클론받고 업데이트 할 수 있도록 환경을 만들어야 합니다.

cd ~/.ssh
ssh-keygen -t rsa

RSA key 생성이 되었으면 cat id_rsa.pub를 입력하여 출력된 내용을 복사하고 github 프로젝트의 Deploy Keys 메뉴에서 항목을 추가합니다.

다음과 같이 github 프로젝트를 복제 합니다. (ssh 형식의 주소)

git clone {REPO_SSH_URL}

만약 권한 문제로 복제가 잘 안된다면 다음과 같이 ~/.ssh/config파일을 만들어 내용을 입력합니다.

Host github.com
Hostname ssh.github.com
Port 443
IdentityFIle ~/.ssh/id_rsa

프로젝트 클론이 끝났으면 패키지 인스톨을 하고 셋업합니다.

cd pablo-draw
npm install
npm run setup

여기까지 완료되었으면 nano .env를 실행하여 .env 파일을 편집해서 환경에 맞는 설정으로 고칩니다.
그리고 다음 명령으로 프로젝트를 빌드합니다.

npm run build

빌드까지 완료했으면 npm run start를 실행하여 문제없이 서버가 열리는지 확인해보고 문제없으면 다음과 같이 pm2에 서버를 등록합니다. (프로젝트 경로에서 실행해줘야 합니다!)

pm2 start -l 0 npm --name "pablo-draw" --log-date-format 'YYYY-MM-DD HH:mm:ss.SSS' -- start
pm2 save

서버를 등록했으면 pm2 list명령으로 상태가 어떤지 확인해봅니다.

pablo-draw 프로젝트 컨트롤 쉘 스크립트

명령어 적기 귀찮기 때문에 쉘 스크립트 만들어서

# pablo-draw.sh
cd /home/ec2-user/pablo-draw

case "$1" in

  pm2)
    pm2 start -l 0 npm --name "pablo-draw" --log-date-format 'YYYY-MM-DD HH:mm:ss.SSS' -- start
    ;;

  upgrade)
    pm2 stop pablo-draw
    git pull
    npm run build
    pm2 start pablo-draw
    ;;

  *)
    echo "Usage: $NAME {pm2|upgrade}" >&2
    exit 3
    ;;

esac

사용하기

# pm2에 노드서버 추가하기
./pablo-draw.sh pm2

# 프로젝트 업그레이드
./pablo-draw.sh upgrade