如何将节点js服务器作为守护进程运行?

时间:2015-12-28 09:15:04

标签: linux node.js

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

5 个答案:

答案 0 :(得分:4)

您可以使用pm2进行制作。

安装pm2:

npm install pm2 -g

要启动应用程序,只需运行:

pm2 start app.js

您可以通过以下方式查看日志:

pm2 logs

有关更多选项,请查看github repo上的自述文件。

答案 1 :(得分:0)

您可以将节点服务器作为后台进程运行。 例如: - node server.js&

答案 2 :(得分:0)

为了创建真正的守护进程(一个没有附加到任何tty的进程),您可以使用npm上可用的几个守护进程模块之一。

快速搜索给了我:https://www.npmjs.com/package/daemon

有趣的是,上面的模块使用纯javascript和node.js内置模块,无需任何C扩展。它的工作原理是利用child_process在较新版本的节点(> 0.9)中的工作方式。

答案 3 :(得分:0)

这是守护程序模块的改编:

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(...)

https://wiki.unix7.org/node/daemon-sample

答案 4 :(得分:0)

  • 要么使用 PM2/forever & nginx 来很好地管理服务。 [推荐]
  • 或者您可以通过默认操作系统服务运行。我在 ec2-t2.micro 上使用 ubuntu 20.04 amd64,一切都预装了图像。
# TO Run the service on port 80 as deamon thread
sudo PORT=80 nohup node server.js &

#To run the service on 3000 port and point to 80.
PORT=3000 nohup node server.js &
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

# to kill the process run 
ps -ef | grep "node"
kill -9 <pid>