[Node] forever 모듈로 죽은 앱 살리기 (프로세스 관리)




Forever 는 node가 예기치 못한 상황에서 앱이 종료될 경우 자동으로 재시작 하도록 해주는 모듈입니다.


또한, 매번 콘솔창에서 node app.js 등의 node 명령어로 앱을 실행시키지 않아도, 백그라운드로 노드 앱을 계속 띄워놓을 수 있도록 해줍니다.


forever 를 사용하면, 간단한 명령들로 쉽게 프로세스들을 관리할 수 있습니다.

PM2 등의 모듈들과 마찬가지로 Forever가 프로세스를 관리해주는 부모 프로세스가 되는 것입니다.

PM2 사용법에 관해서는 기회가 되면 다음번에 포스팅 하도록 하겠습니다.


Forever(NPM) 바로가기 Forever(GitHub) 바로가기




Forever 모듈 설치(npm)



먼저 설치는 npm으로 간단하게 설치가 가능합니다. 앱단위가 아닌 전역으로 프로세스를 관리 할 수 있도록 글로벌 설치를 합시다. (-g)


Bash(Linux)

[root@ /]# npm install -g forever


설치가 완료됐으면, 간단한 forever 명령어를 사용해봅시다!

아래는 실행중인 프로세스 목록을 조회하는 forever 명령어입니다


Bash(Linux)

[root@ /]# forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] UH9Q /usr/local/bin/node app.js 8931 10160 /root/.forever/UH9Q.log 223:1:48:38.155 data: [1] f2mq /usr/local/bin/node app2.js 9022 10172 /root/.forever/f2mq.log 223:1:48:35.995


설치가 제대로 되었다면, 명령어를 사용했을 때 위와 같이 Forever processes running 메세지가 나올 것입니다.

이미 띄워놓은 프로세스가 있을 경우 위와 같이 프로세스 목록이 나옵니다.





간단한 사용법



1. 프로세스 시작


Bash(Linux)

[root@ /]# forever start app.js info: Forever processing file: app.js


2. 실행중인 프로세스 종료


Bash(Linux)

[root@ /]# forever stop info: Forever stopped process: uid command script forever pid logfile uptime [0] cH9d /usr/local/bin/node app.js 16079 16085 /root/.forever/cH9d.log 0:0:0:41.402


3. 프로세스 목록조회


Bash(Linux)

[root@ /]# forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] UH9Q /usr/local/bin/node app.js 8931 10160 /root/.forever/UH9Q.log 223:1:48:38.155 data: [1] f2mq /usr/local/bin/node app2.js 9022 10172 /root/.forever/f2mq.log 223:1:48:35.995


4. 프로세스 재시작


Bash(Linux)

[root@ /]# forever restart app.js info: Forever restarted process(es): data: uid command script forever pid logfile uptime data: [0] UH9Q /usr/local/bin/node app.js 8931 10160 /root/.forever/UH9Q.log 223:1:48:38.155



옵션(Options)



help 명령을 사용하면 forever 의 간단한 사용법들을 조회할 수 있습니다.


Bash(Linux)

[root@ /]# forever --help


다양한 옵션들 중 유용한 옵션 몇개만 알아보도록 하겠습니다.


1. 로그파일 지정 (-l, -e, -o, -a)


옵션중 -l 옵션을 사용하면 log 파일 위치를 따로 지정할 수 있습니다.

따로 지정하지 않을경우 위리스트 목록에서처럼 /root/.forever 하위에 로그파일이 쌓입니다. 따로 관리해주는 편이 좋을듯합니다!


Bash(Linux)

[root@ /]# forever start -l /var/log/app.log app.js


위와 같이 로그 위치를 지정해 주었는데, 해당 로그파일이 이미 존재하며, 새로운 로그파일이 아닌 기존에 있던 파일에 로그를 추가로 등록하고자 하는 경우 -a (append) 옵션을 사용합니다.


Bash(Linux)

[root@ /]# forever start -l /var/log/app.log -a app.js



또한 -o, -e 옵션 등을 사용하여 out Log 와 error Log 를 따로 관리할 수도 있습니다.


2. 소스변경감지 (-w)


-w(watch) 옵션을 사용하면, 앱의 소스코드 변경이 감지될때 자동으로 프로세스를 재시작 시켜줍니다.


Bash(Linux)

[root@ /]# forever start -l /var/log/app.log -a -w app.js




+ Recent posts

티스토리 툴바