簡體   English   中英

如何將節點js服務器作為守護進程運行?

[英]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(...)

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

您可以將節點服務器作為后台進程運行。 例如: - node server.js&

要創建真正的守護進程(一個不附加到任何 tty 的進程),您可以使用 npm 上可用的幾個守護進程模塊之一。

快速搜索給了我這個: https ://www.npmjs.com/package/daemon

有趣的是,上面的模塊使用純 javascript 和 node.js 內置模塊工作,不需要任何 C 擴展。 它通過利用child_process在較新版本的節點(> 0.9)中的工作方式來工作。

  • 要么使用 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM