Nodejs服务器进程管理——forever

通常情况下,Linux服务都会运行于后台,例如 service httpd start 命令,会启动 httpd 服务。Nodejs启动方式目前两个项目forever和pm2都属于进程管理器,和后台服务器原理相同。

本篇博客主要记录forever,现在你看到的博客系统,它的进程管理就由forever来进行管理。

我们平时所使用的命令,如 ls ,或者 wget 这样的名称,它的声明周期依附于当前终端的生命周期。当终端被关闭,这些进程随之被关闭。而想要一个进程周而复始的在系统中执行,就必须创建一个守护进程(Daemon)。

守护进程是一种非常特殊的进程,在Linux进程管理中,所有进程都会由父进程,而守护进程的行程方式在于先创建一个父进程,由父进程创建一个子进程。此时,父进程先于子进程退出。此时的子进程会编程孤儿进程,也就是没有父进程。Linux发现孤儿进程后,当前孤儿进程由PID为1的进程(init进程)收养。这样,原先的子进程就编程了init进程的子进程。然后这个子进程再执行 setID 函数等一些列操作成为守护进程。

这里我们可以明白,守护进程不依赖于终端,故此你退出ssh链接后,进程依然存在。forever的原理在于创建一个守护进程,而守护进程中的子进程则是你编写的Nodejs服务。

通过上面的描述你应该清楚如何部署一个简单的Nodejs服务了。forever具体的使用方式也非常简单。

$ forever start app.js          #启动
$ forever stop app.js           #关闭
$ forever start -l forever.log -o out.log -e err.log app.js   #输出日志和错误

具体的帮助信息可以看forever的git仓