部署NodeJS:让Node应用在后台运行(守护进程)的五种方法

部署NodeJS:让Node应用在后台运行(守护进程)的五种方法

我们知道nodejs断开SSH客户端就会自动退出了,但是在生产环境里面我们需要它一直在后台运行,笔者提供一些方法:

#Option1 forever模块

使用forever就可以让nodejs的应用像服务一样在后台继续运行。

Github:https://github.com/foreverjs/forever

使用方法

npm install forever -g   #安装
forever start app.js     #启动应用
forever stop app.js      #关闭应用
forever restart app.js   #重启应用
forever stopall          #关闭所有应用
forever restartall       #重启所有应用
forever list             #显示所有运行的应用

在Forever安装过程中可能出现的问题:

在云服务器(CentOS 7)上安装forever后,执行命令会提示

-bash:forever:command not found

这是因为服务器没有配置相应的环境变量

解决方法

编辑 /etc/profile 文件,在文件后面加上

export PATH=$PATH:/root/node-v6.9.5-linux-x64/lib/node_modules/forever/bin

其中/root/node-v6.9.5-linux-x64/lib/node_modules/foreverforever的模块安装路径,请根据实际情况修改相应的目录。将文件保存后执行

source /etc/profile

这时候forever应该就可以正常运行了。

此段内容出处:[email protected]

#Option2 使用PM2(Process Manger 2)

官方的介绍是:Advanced, production process manager for Node.js

官网地址:http://pm2.keymetrics.io/,了解更多点击官网即可。

安装使用和forever很像

npm install pm2 -g #安装
pm2 start app.js #启动
pm2 list    #查看所有运行中的应用
pm2 stop    #关闭
pm2 restart #重启
pm2 delete  #删除

小插曲,在这里我无意从google找到了使用pm2运行Strapi的一个issue,这里做个mark。

#Option3 StrongLoop-PM

node应用部署工具(deployer for node applications)

官网地址: http://strong-pm.io

github:https://github.com/strongloop/strong-pm/

安装使用

npm install -g strongloop
cd <my-app>
slc start

官方还提供了一个和PM2、Forever对比的页面:http://strong-pm.io/compare/,用户可以自行对比选择。

#Option4 Supervisor

不同于forever和pm2,Supervisor是系统级的进程管理应用,

github:https://github.com/Supervisor/supervisor

安装和使用方法

npm install -g supervisor

启动应用

supervisor app/server.js

这里要说明的一点是,不论你的网站服务启动文件在什么位置,你必须在根目录启动它。以Express4.0为例,启动文件位于 ./bin/www 中,则我们启动时,必须在 ./ 中执行:

supervisor bin/www

个人不推荐使用此法。

#Option5 使用nohup

nohup也是系统级的应用,在《》一文中曾经介绍过nohup的一些特性,在这里可以直接使用命令

nohup node server.js &

让nodejs的应用在后台运行,但是nohup的缺点也很显然,在功能上不如forever和pm2。

小结

要实现node应用的进程守护方法很多,笔者推荐前三者专门针对node应用的部署的模块:forever、PM2、StrongLoop。

相关资源:

Post Comment