Nodejs:forever让nodejs应用后台执行
Nodejs:forever让nodejs应用后台执行
nodejs一般是当成一条用户命令执行的,当用户断开客户连接,运用也就停了,很烦人。如何让nodejs应用当成服务,在后台执行呢?
最简单的办法:
$ nohup node app.js &
但是,forever能做更多的事情,比如分别记录输出和错误日志,比如可以在js中作为api使用。
$ sudo npm install forever -g #安装
$ forever start app.js #启动
$ forever stop app.js #关闭
$ forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误
Nodejs:forever让nodejs应用后台执行
在开发和部署Node.js应用时,经常会遇到一个问题:当我们通过终端启动Node.js应用后,如果关闭终端,应用也会随之停止运行。为了解决这个问题,我们可以使用forever
工具,它可以帮助我们将Node.js应用作为后台服务运行,并且提供了丰富的功能来管理这些应用。
最简单的办法
首先,我们可以通过nohup
命令将Node.js应用在后台运行:
$ nohup node app.js &
这种方式虽然简单,但功能有限。它不会自动重启崩溃的应用,也没有详细的日志记录功能。
使用forever
为了更好地管理和监控Node.js应用,推荐使用forever
工具。forever
不仅可以将应用在后台运行,还可以记录应用的日志、重启崩溃的应用等。
-
安装forever
首先需要全局安装
forever
:$ sudo npm install forever -g
-
启动应用
使用
forever start
命令启动应用:$ forever start app.js
-
关闭应用
使用
forever stop
命令关闭应用:$ forever stop app.js
-
指定日志文件
可以通过参数指定输出日志和错误日志文件:
$ forever start -l forever.log -o out.log -e err.log app.js
这样,所有标准输出会被记录到
out.log
文件,而错误信息会被记录到err.log
文件。 -
查看应用状态
可以通过以下命令查看正在运行的应用的状态:
$ forever list
在代码中使用forever API
除了通过命令行使用forever
外,你也可以在Node.js应用中直接使用forever
的API来管理应用生命周期。例如,你可以通过以下方式在应用中启动自身:
const forever = require('forever-monitor');
const child = new (forever.Monitor)('app.js', {
max: 3, // 应用崩溃后最大重启次数
silent: false, // 不隐藏输出
options: [] // 传递给node的参数
});
child.on('exit', function () {
console.log('app.js has exited');
});
child.start();
这种方式可以在应用内部进行更复杂的逻辑控制,例如根据某些条件决定是否重启应用。
总之,forever
是一个非常强大的工具,可以极大地简化Node.js应用的后台管理和维护工作。
我遇到 stop
不能正常执行的… 不知道怎么办诶
start之后再运行list,显示“info: No forever processes running”,运行stop、restart等无效,难道进程不是持续的? 还有看文档“-w”参数是监视js文件改动的吧,是不是文件改动后即自动重载呢?可是感觉没有效果啊
嗯 ,就是一个协助nodejs自启动的工具,可惜是外部的。如果部署到云端服务器,这个就没有作用了。有的web框架中可以实现自启动,如果文件发生改变自启动,如果出现异常自启动,如果程序假死自启动。但是好像都需要配置一下。
看到这个了,有空试一下这个.
为什么我用npm install 安装forever出现错误
求各位大神解救~或是除了以上方法还有什么方法能够安装forever呢?
nohup node app.js &
这个有问题的,关闭控制台后再有输出NODE就变僵尸了
nohup node app.js > /foo/log.txt 2>&1 & 足矣
个人觉着forever的几个好处
1, daemon 不用自己写 2, 自动重启, 特别适合web项目 3, 进程管理
sudo了么?
forever -w app.js -w 参数是自动监控文件变化,文件修改保存了自动重启app.js。非常爽。唯一不爽的是那个 .foreverignore 不起作用,作者一直没有修改。
要让Node.js应用在后台持续运行,并且能够管理应用的启动、停止以及日志输出,可以使用forever
工具。forever
可以让Node.js应用像服务一样在后台运行,同时提供详细的日志记录功能。
安装
首先,需要全局安装forever
:
$ sudo npm install -g forever
使用
启动应用
要启动一个Node.js应用并使其在后台运行,可以使用以下命令:
$ forever start app.js
这会启动app.js
,并且如果该进程意外退出,forever
会自动重启它。
停止应用
如果想要停止正在运行的应用,可以使用以下命令:
$ forever stop app.js
查看运行状态
查看所有由forever
管理的进程的状态:
$ forever list
日志管理
如果你想分别记录输出和错误日志,可以这样做:
$ forever start -l forever.log -o out.log -e err.log app.js
-l
指定一个文件来存储所有日志信息。-o
指定一个文件来存储标准输出。-e
指定一个文件来存储标准错误输出。
这样配置后,out.log
文件将包含程序的标准输出,而err.log
文件将包含程序的错误输出。
API使用
除了通过命令行使用外,你还可以在Node.js应用中通过API调用forever
。例如:
const forever = require('forever-monitor');
let child = new (forever.Monitor)('app.js', {
max: 3, // 最多重启3次
silent: false, // 是否静默输出
options: [
'--harmony'
]
});
child.on('start', () => {
console.log('Child process started');
});
child.on('stop', () => {
console.log('Child process stopped');
});
child.start();
上述代码创建了一个新的forever
监控器实例,用来运行app.js
。如果进程退出,它会根据配置尝试重启。你可以监听不同的事件(如start
和stop
)来处理进程启动或停止时的逻辑。
以上就是使用forever
让Node.js应用后台运行的基本介绍。