StrongLoop의 Express 및 Node.js 교육

StrongLoop / IBM에 의해 제공이 번역.

이 문서는 영문판 문서에 비해 더 오래된 버전일 수도 있습니다. 최신 업데이트를 확인하려면 영문판 문서를 참조하십시오.

Express 앱용 프로세스 관리자

프로덕션 환경을 위한 Express를 실행할 때 프로세스 관리자를 사용하면 다음과 같은 태스크를 달성하는 데 도움이 됩니다.

프로세스 관리자는 애플리케이션 서버와 약간 비슷합니다. 프로세스 관리자는 애플리케이션을 위한 “컨테이너”이며, 배치 작업을 용이하게 하고, 높은 가용성을 제공하고, 런타임 시에 애플리케이션을 관리할 수 있도록 합니다.

가장 널리 사용되는 Express 및 기타 Node.js 애플리케이션용 프로세스 관리자는 다음과 같습니다.

이 세 가지 도구 중 어느 것을 사용해도 큰 도움이 될 수 있지만, StrongLoop Process Manager는 Node.js 애플리케이션 라이프사이클 전체를 처리하는 포괄적인 런타임 및 배치 솔루션과 프로덕션의 이전과 이후의 모든 단계에 대한 툴링을 통합 인터페이스를 통해 제공하는 유일한 도구입니다.

아래에서는 이 세 가지 도구를 각각 간략히 살펴보겠습니다. 이 도구들에 대한 상세한 비교를 확인하려면 http://strong-pm.io/compare/를 참조하십시오.

StrongLoop Process Manager

StrongLoop Process Manager(StrongLoop PM)는 Node.js 애플리케이션용 프로덕션 프로세스 관리자입니다. StrongLoop PM에는 기본 제공 로드 밸런싱, 모니터링, 멀티호스트 배치 및 그래픽 콘솔이 포함되어 있습니다. StrongLoop PM은 다음과 같은 태스크에 사용할 수 있습니다.

slc라는 강력한 명령행 인터페이스 도구 또는 Arc라는 그래픽 도구를 이용해 StrongLoop PM에 대한 작업을 실행할 수 있습니다. Arc는 오픈 소스 방식이며, StrongLoop에서 전문적인 지원을 제공합니다.

자세한 정보는 http://strong-pm.io/를 참조하십시오.

전체 문서:

설치


$ [sudo] npm install -g strongloop

기본적인 사용


$ cd my-app
$ slc start

Process Manager 및 배치된 모든 앱의 상태를 확인:


$ slc ctl
Service ID: 1
Service Name: my-app
Environment variables:
  No environment variables defined
Instances:
    Version  Agent version  Cluster size
     4.1.13      1.5.14           4
Processes:
        ID      PID   WID  Listening Ports  Tracking objects?  CPU profiling?
    1.1.57692  57692   0
    1.1.57693  57693   1     0.0.0.0:3001
    1.1.57694  57694   2     0.0.0.0:3001
    1.1.57695  57695   3     0.0.0.0:3001
    1.1.57696  57696   4     0.0.0.0:3001

관리 중인 모든 앱(서비스)의 목록을 표시:


$ slc ctl ls
Id          Name         Scale
 1          my-app       1

앱을 중지:


$ slc ctl stop my-app

앱을 다시 시작:


$ slc ctl restart my-app

또한 작업자 프로세스에게 기존의 연결을 닫은 후 현재의 애플리케이션을 다시 시작할 수 있는 유예 기간을 제공하는 “소프트 다시 시작”을 다음과 같이 구현할 수 있습니다.


$ slc ctl soft-restart my-app

관리 대상에서 앱을 제거:


$ slc ctl remove my-app

PM2

PM2는 Node.js 애플리케이션용 프로덕션 프로세스 관리자이며, 여기에는 기본 제공 로드 밸런서가 포함되어 있습니다. PM2를 이용하면 앱을 항상 작동 상태로 유지하고, 시스템 가동 중단 없이 앱을 다시 로드할 수 있으며, 일반적인 시스템 관리 태스크를 쉽게 처리할 수 있습니다. 또한 PM2를 이용하면 애플리케이션 로깅, 모니터링 및 클러스터링을 관리할 수 있습니다.

자세한 정보는 https://github.com/Unitech/pm2를 참조하십시오.

설치


$ [sudo] npm install pm2 -g

기본적인 사용

pm2 명령을 이용해 앱을 시작할 때는 앱의 경로를 지정해야 합니다. 그러나 앱을 중지하거나, 다시 시작하거나, 삭제할 때는 앱의 이름 또는 ID만 지정할 수 있습니다.


$ pm2 start app.js
[PM2] restartProcessId process id 0
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ my-app   │ 0  │ fork │ 64029 │ online │ 1       │ 0s     │ 17.816 MB   │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use the `pm2 show <id|name>` command to get more details about an app.

pm2 명령을 이용해 앱을 시작할 때, 앱은 즉시 백그라운드로 보내집니다. 다양한 pm2 명령을 이용하면 명령행을 통해 백그라운드 앱을 제어할 수 있습니다.

pm2 명령을 이용해 앱을 시작하면, 앱은 PM2의 프로세스 목록에 ID와 함께 등록됩니다. 따라서 시스템의 서로 다른 디렉토리에 있는 동일한 이름의 앱을 각 앱의 ID를 이용해 관리할 수 있습니다.

동일한 이름의 앱이 2개 이상 실행되고 있는 경우, pm2 명령은 동일한 이름의 앱 모두에 영향을 미친다는 점을 참고하십시오. 그러므로 개개의 앱을 관리하려면 이름 대신 ID를 사용하십시오.

실행 중인 모든 프로세스의 목록을 표시:


$ pm2 list

앱을 중지:


$ pm2 stop 0

앱을 다시 시작:


$ pm2 restart 0

앱에 대한 상세 정보를 확인:


$ pm2 show 0

PM2의 레지스트리에서 앱을 제거:


$ pm2 delete 0

Forever

Forever는 주어진 스크립트가 지속적으로(영원히) 실행되도록 하는 간단한 명령행 인터페이스 도구입니다. Forever는 간단한 인터페이스를 갖추고 있으므로 소규모 배치의 Node.js 앱 및 스크립트를 실행하는 데 가장 적합합니다.

자세한 정보는 https://github.com/foreverjs/forever를 참조하십시오.

설치


$ [sudo] npm install forever -g

기본적인 사용

스크립트를 시작하려면 forever start 명령을 이용해 해당 스크립트의 경로를 다음과 같이 지정하십시오.


$ forever start script.js

이 명령은 디먼 모드에서(백그라운드에서) 해당 스크립트를 실행합니다.

터미널에 연결되도록 스크립트를 실행하려면 다음과 같이 start를 생략하십시오.


$ forever script.js

로깅 옵션인 -l, -o-e를 이용해 Forever 도구 및 스크립트의 출력을 로깅하는 것은 좋은 생각이며, 아래에는 이에 대한 예가 표시되어 있습니다.


$ forever start -l forever.log -o out.log -e err.log script.js

Forever를 통해 시작된 스크립트의 목록을 확인:


$ forever list

Forever를 통해 시작된 스크립트를 중지하려면 forever stop 명령을 이용해 프로세스 인덱스를 지정하십시오(인덱스는 forever list 명령을 통해 표시되는 목록을 참조).


$ forever stop 1

대안적으로, 다음과 같이 파일의 경로를 지정할 수 있습니다.


$ forever stop script.js

Forever를 통해 시작된 모든 스크립트를 중지:


$ forever stopall

Forever에는 더 많은 옵션이 있으며 프로그래밍 방식의 API 또한 제공합니다.