반응형

nodejs로 작성된 서버를 실행하는 방법에는 여러 가지가 있다.

 

server.js 라는 파일에 서버 코드를 작성 하였다고 가정하면.

 

1. 파일을 직접 실행

node server.js

 

2. package.json에 실행 명령을 등록한 후 npm 명령을 통해 실행

{
  ...
  "scripts": {
    "start": "node server.js"
  },
  ...
}
npm start # 또는 npm run start

 

3. pm2를 활용하여 실행

pm2 start server.js

 

 

1, 2번의 경우 서버 실행 시 프로세스가 foreground에 떠있으므로 새로운 작업을 하려는 경우 새로운 세션을 열어 작업을 해야한다. background에서 동작하도록 처리하는 방법은 여러가지가 있으나 pm2를 사용할수만 있다면 그냥 pm2를 사용하는 것이 여러모로 편하다.

 

웬만하면 pm2를 사용하는데 문제가 없지만 package.json에 등록해둔 스크립트를 실행할 때 문제가 생기게 된다.

예를 들어, 다음과 같이 명령에 여러 옵션을 제공해야 한다고 가정해보자.

{
  ...
  "scripts": {
    "start": "node server.js -p 9090 -c myconfig.json"
  },
  ...
}

위 코드를 다음과 같이 pm2에서 시도한다면 옵션에 대한 주체가 pm2로 변경되기 때문에 에러가 발생한다.

pm2 start server.js -p 9090 -c myconfig.json

이런 경우, 기존 방식대로 서버 파일을 직접 사용하는 대신 스크립트에 등록한 명령을 바로 활용하면 된다.

pm2 start npm -- start # npm start 와 동일한 작업을 수행한다.

 

반응형

+ Recent posts