发布: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辨认当前是什么环境用的
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4