Jaerock
피아노 치는 개발자
Jaerock
전체 방문자
오늘
어제
  • 분류 전체보기
    • Front_End
      • Angular
      • Vue.js
      • React
      • Basic
      • Nuxt.js
      • Electron
    • Main
    • WEB
      • PM2
    • 기술면접
      • OS
      • ComputerNetwork
      • ComputerStructure
      • Programming
      • Database
    • Tensorflow

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • tensorflow install mac
  • 컴퓨터 네트워크
  • cookie
  • REACT
  • 웹
  • 면접 질문
  • 웹저장소
  • session storage
  • IT면접
  • pm2
  • tensorflow
  • react.js
  • vue
  • Tutorial
  • vue.js
  • 쿠키
  • JavaScript
  • Angular
  • 면접질문
  • local storage

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jaerock

피아노 치는 개발자

WEB/PM2

PM2 기본적인 것

2017. 9. 22. 18:30

PM2

뜬금없이 pm2에 대한 포스팅을 하는 이유는 이제 서버에서 호스팅을 시작하기 때문이다. pm2는 process manager 의 약자로 nodeJS를 이용해 서버를 돌리는 사람에게 많은 도움을 준다고 생각하면 된다.

대표적인 기능

  1. 앱에서 충돌이 발생할 경우 앱을 자동으로 다시 시작
  2. 런타임 시 서버가 자원을 얼마나 먹는지에 대해서 알 수 있음
  3. 클러스터링으로 성능 향상

1번기능이 아주 매력적이라고 생각이든다. 서버가 살아있는지 죽었는지 매시간 매분 매초마다 확인할 수 없기 때문에 아주 유용한 것 같다.

pm2 설치

이제 저도 맥으로 바꿔서 맥용으로 작성하도록 하겠다.
윈도우는 앞 $ 명령어만 제거하시면 될 것 같다.

$npm install pm2 -g

호스팅하는 시점이니 npm은 당연히 설치가 되있을 거라고 본다.
설치가 완료되었으면 버전을 확인해보자

$pm2 -v
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____   
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__

      Production Process Manager for Node.js apps
            with a built-in Load Balancer.

      Start and Daemonize any application:
      $ pm2 start app.js

      Load Balance 4 instances of api.js:
      $ pm2 start api.js -i 4

      Monitor in production:
      $ pm2 monitor

      Make pm2 auto-boot at server restart:
      $ pm2 startup

            To go further checkout:
            http://pm2.io

            -------------

[PM2] Spawning PM2 daemon with pm2_home=/Users/rock/.pm2
[PM2] PM2 Successfully daemonized

이렇게 뜨면 잘 설치가 된 것이다.
일단 저같은 경우에는 Frontend개발을 하므로 nodeJS 애플리케이션의 실행파일인 app.js가 없다.

app.js가 있는경우 해당 파일이 있는 경로에서

$ pm2 start app.js

위 명령어를 치면 해당하는 서버가 구동이 된다.

Jaerockui-MacBook-Pro:~ rock$ pm2 start app.js
[PM2][ERROR] script not found : /Users/rock/app.js
script not found : /Users/rock/app.js
┌──────┬──────┬────────┬───┬─────┬────────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory │
└──────┴──────┴────────┴───┴─────┴────────┘
Use `pm2 show <id|name>` to get more details about an app

실제로 있는 경우에는 저기 표에해당하는 Name에 app이름이 뜨고 등등등이 뜬다




___

pm2 명령어

프론트개발자라도 자주 쓸 듯하다.

  • pm2 list : 현재 서버에서 실행되고 있는 프로세스 목록을 보고 싶을 때 사용.
  • pm2 stop 'app name' : 현재 서버에서 실행되고 있는 프로세스 중지.
  • pm2 delete 'app name' : 현재 서버에서 실행되고 있는 프로세스 삭제.
  • pm2 log : 마지막 로그내용과 함께 이후 출력되는 로그 내용을 화면에 뿌려주게 된다.
  • pm2 flush : 모든 로그 삭제

최근에 실수한 것 이 stop은 말 그대로 배포를 중지하는 것 일 뿐이다. 즉 프로세스가 아직 cpu에 올라가 있다고 생각하면된다.

delete 같은 경우는 아예 삭제하는 것이기 때문에 pm2 list를 쳐보면 프로세스가 없어짐을 알 수 있다.

pm2 stop >> pm2 start 와 pm2 delete >> pm2 start의 차이를 명확히 알 필요가 있다.

그리고 만약에 서버에서 git pull만 받아도 바로 변경사항이 적용된다면 구지 pm2 start를 할 필요가 없다.


이정도만 알면 아직까지는 배포하는데 크게 문제가 없을 듯 하다.
더 필요한 것이 생기면 계속 추가하도록 해야겠다.







    Jaerock
    Jaerock

    티스토리툴바