티스토리 뷰

 

express앱을 배포 할 때 아래 명령어를 써서 배포를 하곤 합니다.

node app.js &

 

그런데 ci/cd를 구축 하려고 하면 kill -9 <process_id>로 내렸다가 올려야 합니다. 그런메 process_id를 따로 관리 해주기가 불편해서 안쓰고 있었는데 pm2라는 것을 알게 되었습니다.

 

pm2 설치

sudo npm install pm2 -g

설치는 위 명령어로 해주면 됩니다.

 

 

pm2 명령어

 

그리고 node app.js 대신 pm2 start app.js 를 써주시면 됩니다.

그러면 이렇게 name이 app이라고 뜹니다.

 

pm2 stop app

 

여기에서 위 명령어를 쓰면 프로세스를 프로세스 id를 몰라도 종료 할 수 있습니다.

 

그리고 다시 git pull을 받고 pm2 start app.js 해주면 됩니다.

 

stop and start가 귀찮다면 pm2 restart app 을 씁니다.

 

아래 스크립트는 캐싱 기능이 포함되어 있어서 npm install을 빠르게 해주는 기능이 포함된 제가 사용하는 깃랩 cicd코드 입니다. start를 해주시고 뒤에 start를 restart로 바꿔서 사용중입니다.

 

.gitlab.ci.yml

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
  - node_modules/
  - .next/

stages:          # List of stages for jobs, and their order of execution
  - install
  - build
  - deploy

install_dependencies:
  stage: install
  tags:
    - $TAG
  script:
    - echo "$TAG"
    - npm install


deploy-job:      # This job runs in the deploy stage.
  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
  tags: 
    - $TAG
  script:
    - echo "Deploying application..."
    - pm2 start app.js

 

결과

pm2 restart app은 app이 실행중이 아니면 작동을 하지 않기 때문에 start로 먼저 실행하고 pm2 restart app으로 바꿉니다.

 

 

인스턴스 상태 보기

pm2 show app

현재 실행중인 앱 이름이 app이기 때문에 app으로 했습니다.

 

end.

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함