A闪的 BLOG 技术与人文
通常情况下,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仓。