nodejs后台运行的五种方法

  • A+
所属分类:nodejs

文章目录

  1. 1.forever

  2. 2.PM2

  3. 3.StrongLoop-PM

  4. 4.Supervisor

  5. 5.nohup

部署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应该就可以正常运行了。

    此段内容出处: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。

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: