如何将node.js应用程序作为后台服务运行?

40 浏览
0 Comments

如何将node.js应用程序作为后台服务运行?

由于这篇文章多年来引起了很多关注,我已经在本文底部列出了每个平台的最佳解决方案。


原始文章

我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望服务器仍在运行。我谷歌了一下,找到了这个教程,但它没有按预期工作。因此,我想换一种方法,使用输出重定向(2>&1 >> file),但这也没有退出——我在终端中得到一个空行,就像它在等待输出/错误。

我还尝试将进程放到后台运行,但是一旦我关闭终端,进程也会被杀死。

那么,当我关闭本地计算机时,如何使它继续运行?


最佳解决方案

admin 更改状态以发布 2023年5月21日
0
0 Comments

你可以使用Forever,这是一个简单的命令行工具,可确保给定的Node脚本持续运行(即永远不停止):https://www.npmjs.org/package/forever

0
0 Comments

如何将Node.js应用程序作为其自己的进程运行?复制我的答案

2015年的答案:几乎每个Linux发行版都带有systemd,这意味着forever、monit、PM2等不再必要——您的操作系统已经处理了这些任务

创建一个myapp.service文件(显然用您的应用程序名称代替'myapp'):

[Unit]
Description=My app
[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nogroup
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,并且具有可执行模式chmod +x app.js

将服务文件复制到/etc/systemd/system中。

使用systemctl start myapp启动它。

启用它在启动时运行systemctl enable myapp

使用journalctl -u myapp查看日志

本文节选自我们如何在Linux上部署Node应用程序,2018年版,其中还包括生成用于构建Linux/node服务器(包括.service文件)的AWS/DigitalOcean/Azure CloudConfig的命令。

0