部署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/forever
是forever
的模块安装路径,请根据实际情况修改相应的目录。将文件保存后执行
source /etc/profile
这时候forever
应该就可以正常运行了。
此段内容出处:zhiyual@CSDN
#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和screen让脚本在linux的后台运行》一文中曾经介绍过nohup的一些特性,在这里可以直接使用命令
nohup node server.js &
让nodejs的应用在后台运行,但是nohup的缺点也很显然,在功能上不如forever和pm2。
小结
要实现node应用的进程守护方法很多,笔者推荐前三者专门针对node应用的部署的模块:forever、PM2、StrongLoop。
相关资源: