Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将NodeJS服务器作为守护进程运行?_Linux_Node.js - Fatal编程技术网

Linux 如何将NodeJS服务器作为守护进程运行?

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

我正在为一个应用程序使用Ionic框架和nodejs。所有nodejs文件都在linux服务器中。我正在通过putty使用“npm start&”命令启动nodejs服务器。但问题是,如果我关闭putty,服务器会在一段时间后停止。我试过“nohup npm start&”。但我仍然面临着同样的问题。如何将其作为守护进程启动?

您可以将其用于生产

安装pm2:

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中运行,这是一个难以置信的软件包。