如何将node.js应用程序作为后台服务运行?
由于这篇文章多年来引起了很多关注,我在这篇文章的底部列出了每个平台的顶级解决方案。
原文 :
我想让我的node.js服务器在后台运行,即:当我关闭我的终端时,我希望我的服务器继续运行。 我已经使用了这个教程,并提出了本教程,但它不能按预期工作。 所以不是使用这个守护进程脚本,我认为我只是使用了输出重定向( 2>&1 >> file
部分),但是这个也不会退出 - 我的终端里有一个空行,就像等待输出/错误。
我也试图把这个过程放在后台,但是一旦我关闭了终端,这个过程也会被终止。
那么当我关闭本地计算机时,如何让它继续运行?
顶级解决方案
从我如何运行Node.js应用程序作为自己的进程复制我自己的答案?
2015答案 :几乎每个Linux发行版都附带了systemd,这意味着永远不会再需要monit等 - 您的操作系统已经可以处理这些任务 。
制作一个myapp.service
文件(显然,用您的应用程序的名称替换“myapp”):
[Unit]
Description=My app
[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note RHEL/Fedora uses 'nobody', Debian/Ubuntu uses 'nogroup'
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp
[Install]
WantedBy=multi-user.target
注意如果你是Unix的新手: /var/www/myapp/app.js
在第一行应该有#!/usr/bin/env node
。
将你的服务文件复制到/etc/systemd/system
。
用systemctl start myapp
启动它。
使其能够在systemctl enable myapp
启动时运行。
使用journalctl -u myapp
查看日志
更多详情请见: 我们如何在Linux上部署节点应用程序,2018年版
您可以使用Forever,一个简单的CLI工具来确保给定节点脚本连续运行(即永远):https://www.npmjs.org/package/forever
更新 - 正如在下面的答案之一中提到的,PM2有一些非常好的功能从永远丢失。 考虑使用它。
原始答复
使用nohup:
nohup node server.js &
编辑我想补充说,接受的答案是真的要走的路。 我永远在需要熬夜的实例上使用。 我喜欢npm install -g forever
执行npm install -g forever
因此它在节点路径中,然后forever start server.js