노드js로 작성한 서버나 앱이 죽으면 영원히(forever) 자동으로 재실행 해주는 forever 명령어

 

@@일반적인 사용 설치

[sudo] npm install forever -g

*-g는 글로벌 옵션입니다

 

@@프로그래밍 방식으로 forever를 사용하는 경우

- 프로젝트 경로로 이동 (cd : 경로 변경 명령)

cd /path/to/your/project

- 프로젝트 내에 forever-monitor 설치 (sudo는 관리자 권한으로 실행하는 명령어)

[sudo] npm install forever-monitor

 

@@forever 몇가지 명령어

터미널 창을 열고 아래의 명령어를 입력하여 사용합니다.

 

- 파일 실행

forever start 실행파일.js


- 실행 정지

forever stop 실행파일.js

* 실행파일 명 이외에도 정지명령에 사용 가능 ( Id|Uid|Pid|Index|Script )

 

- 실행중인 리스트 보기 (Uid, 실행파일, Pid, Id, log파일위치, 실행시간 등의 정보가 있습니다)

forever list

 

이외의 설명은 help 도움말을 이용하시면 되겠습니다

forever --help

 

 

@@Json 형식으로 설정된 파일 실행

프로젝트 내에 json파일에 미리 forever 명령어에 사용할 내용을 작성하고, 해당 파일을 실행하는 방법입니다

.  (대충 프로젝트 구조)
├── forever
│        └── development.json               <------- forever 미리 설정한 json 파일
└── index.js                    <-------- development.json에 미리 실행되게 작성돼있는 js파일

// forever/development.json  (forever 실행을 위해 작성된 json)
{
    // Comments are supported
     "uid": "app",
     "append": true,
     "watch": true,
     "script": "index.js",
     "sourceDir": "/home/myuser/app",
     "logFile": "/home/myuser/logs/forever.log",
     "outFile": "/home/myuser/logs/out.log",
     "errFile": "/home/myuser/logs/error.log"
}

위에 작성된 development.json 파일을 forever로 실행하여 설정된 옵션에 따른 forever 실행이 가능한가 봅니다

아래의 명령을 이용하여 해당경로의 json파일을 forever 실행 시킵니다.

forever start ./forever/development.json
위는 상대경로이며 절대경로를 이용하여 터미널창에서 실행할수 있습니다
$ forever start /home/myuser/app/forever/development.json

json 구성에 여러개의 앱을 지정하여 다중 앱을 실행할 수 도 있습니다

[
    {
    // App1
     "uid": "app1",
     "append": true,
     "watch": true,
     "script": "index.js",
     "sourceDir": "/home/myuser/app1"
    },
    {
    // App2
     "uid": "app2",
     "append": true,
     "watch": true,
     "script": "index.js",
     "sourceDir": "/home/myuser/app2",
     "args": ["--port", "8081"]
    }
]

 

 

@@프로그램 코드 내에서 forever 실행

forever 버전 0.6.0 이후 부터는 바로 사용이 불가능하고 맨처음 위에서 설치한 forever-monitor의 forever.Monitor를 인스턴스화 시킨 자식을 사용하여 실행시킨다고 합니다.

 

프로그램 코드내에서 forever를 사용하는 예제는 https://github.com/foreversd/forever/blob/master/lib/forever/cli.js 깃허브 작성자가 올려두었습니다

'개발 > Node.js, javascript' 카테고리의 다른 글

[javascript] Dictionary 간단한 사용정리  (0) 2021.11.30

+ Recent posts