[英]How to run node js server as a daemon process?
我正在为一个应用程序使用 Ionic 框架和 nodejs。 所有 nodejs 文件都在 linux 服务器中。 我正在通过腻子使用“npm start &”命令启动 nodejs 服务器。 但问题是,如果我关闭腻子,服务器会在一段时间后停止。 我试过'nohup npm start &'。 但我仍然面临着同样的问题。 如何将其作为守护进程启动..?
您可以使用pm2进行生产。
安装 pm2:
npm install pm2 -g
要启动应用程序,只需运行:
pm2 start app.js
您可以通过以下方式检查日志:
pm2 logs
有关更多选项,请在github repo上查看他们的自述文件。
这是守护进程模块的改编:
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(...)
您可以将节点服务器作为后台进程运行。 例如: - node server.js&
要创建真正的守护进程(一个不附加到任何 tty 的进程),您可以使用 npm 上可用的几个守护进程模块之一。
快速搜索给了我这个: https ://www.npmjs.com/package/daemon
有趣的是,上面的模块使用纯 javascript 和 node.js 内置模块工作,不需要任何 C 扩展。 它通过利用child_process
在较新版本的节点(> 0.9)中的工作方式来工作。
# 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.