隐藏

windows下使用forever守护Node.js进程,保证网站服务在关掉node.js时也能正常

发布:2023/11/10 21:04:51作者:管理员 来源:本站 浏览次数:560

前言:


最近搭建的一个项目是用node.js实现的,运行环境是windows server 2008 R2,启动方式就是在 CMD 里输入node mainApp.js。


然而这样还不够严谨,万一有哪个 Error 没捕获到,整个服务就挂了,为了万无一失,还是得有个自动重启的能力。


目标:


        支持崩溃后自动重启

        支持后台运行


自动重启和后台运行:


因为 javascript 的单线程运行方式,一点错误就彻底崩溃的特性,自动重启的解决方案自然也早就有了,比如 pm2 和 forever ,从功能上看,pm2 比 forever 要强大不少,然而我只想要个 "Keep Alive" ,所以我选择了 forever。

1、先全局安装 forever


开始 → 运行 → cmd,输入以下命令:


npm install -g forever


卸载的命令:


npm uninstall -g forever


如果forever安装失败,建议使用淘宝镜像cnpm来安装。


安装淘宝npm镜像,在cmd窗口执行下方命令:


npm install cnpm -g --registry=https://registry.npm.taobao.org


注意:安装完后最好查看其版本号cnpm -v或关闭命令提示符重新打开,安装完直接使用有可能会出现错误;


cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm(以下操作将以cnpm代替npm)。


cnpm install -g forever


2、安装成功后,开始使用forever


旧的启动脚本:


node mainApp.js


新的启动脚本:


forever mainApp.js


看明白了吗?是直接使用forever命令代替了node命令。

forever的用法:


   npm install forever -g   #安装

   forever start app.js  #启动应用

   forever stop app.js  #关闭应用

   forever restartall  #重启所有应用

   

   #输出日志和错误

   forever start -l forever.log -o out.log -e err.log app.js  

   

   # 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log

   forever start -l forever.log app.js

   

   # 指定app.js中的日志信息和错误日志输出文件,

   # -o 就是console.log输出的信息,-e 就是console.error输出的信息

   forever start -o out.log -e err.log app.js

   

   # 追加日志,forever默认是不能覆盖上次的启动日志,

   # 所以如果第二次启动不加-a,则会不让运行

   forever start -l forever.log -a app.js

   

   # 监听当前文件夹下的所有文件改动(不太建议这样)

   forever start -w app.js

   

   # 显示所有运行的服务

   forever list

   

   ######停止操作

   

   # 停止所有运行的node App

   forever stopall

     

   # 停止其中一个node App

   forever stop app.js

   

   # 当然还可以这样

   # forever list 找到对应的id,然后:

   forever stop [id]

   

   # 开发环境下

   NODE_ENV=development forever start -l forever.log -e err.log -a app.js

   # 线上环境下

   NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js

   #上面加上NODE_ENV为了让app.js辨认当前是什么环境用的