Linux 如何将NodeJS服务器作为守护进程运行?
我正在为一个应用程序使用Ionic框架和nodejs。所有nodejs文件都在linux服务器中。我正在通过putty使用“npm start&”命令启动nodejs服务器。但问题是,如果我关闭putty,服务器会在一段时间后停止。我试过“nohup npm start&”。但我仍然面临着同样的问题。如何将其作为守护进程启动?您可以将其用于生产 安装pm2:Linux 如何将NodeJS服务器作为守护进程运行?,linux,node.js,Linux,Node.js,我正在为一个应用程序使用Ionic框架和nodejs。所有nodejs文件都在linux服务器中。我正在通过putty使用“npm start&”命令启动nodejs服务器。但问题是,如果我关闭putty,服务器会在一段时间后停止。我试过“nohup npm start&”。但我仍然面临着同样的问题。如何将其作为守护进程启动?您可以将其用于生产 安装pm2: npm install pm2 -g 要启动应用程序,只需运行: pm2 start app.js 您可以通过以下方式检查日志: pm
npm install pm2 -g
要启动应用程序,只需运行:
pm2 start app.js
您可以通过以下方式检查日志:
pm2 logs
有关更多选项,请在上签出其自述文件 要创建真正的守护进程(未连接到任何tty的进程),可以使用npm上提供的几个守护进程模块之一
快速搜索给了我以下信息:
有趣的是,上面的模块使用纯javascript和node.js内置模块工作,不需要任何C扩展。它通过利用
child\u进程在较新版本的node(>0.9)中的工作方式来工作。这是守护程序模块的自适应:
const child_process = require('child_process')
function child(exe, args, env) {
const child = child_process.spawn(exe, args, {
detached: true,
stdio: ['ignore', 'ignore', 'ignore'],
env: env
})
child.unref()
return child
}
module.exports = function(nodeBin) {
console.log('Daemonize process')
if (process.env.__daemon) {
return process.pid
}
process.env.__daemon = true
var args = [].concat(process.argv)
var node = args.shift()
var env = process.env
child(node, args, env)
return process.exit()
}
用法:
const daemon = require('daemon')
daemon()
app.listen(...)
- 使用PM2/forever和nginx管理好服务。[建议]
- 也可以使用默认的操作系统服务运行。我在ec2-t2.micro上使用Ubuntu20.04 amd64,所有的东西都是用映像预安装的
#在端口80上作为deamon线程运行服务
sudo PORT=80 nohup node server.js&
#在3000端口上运行服务并指向80。
端口=3000 nohup node server.js&
iptables-tnat-A预路由-i eth0-ptcp-dport80-j重定向-到端口3000
#要终止进程,请运行
ps-ef | grep“节点”
杀死-9
这将对您有所帮助。安装npm安装-g forever
并运行forever start server.js
另一种方法是在screenWow中运行,这是一个难以置信的软件包。