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

文章目录
  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应该就可以正常运行了。

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