小编典典

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

all

由于这篇文章多年来受到了很多关注,我在这篇文章的底部列出了每个平台的顶级解决方案。


原帖

我希望我的 node.js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行。我已经用谷歌搜索了这个并想出了这个教程,但是它没有按预期工作。因此,我没有使用该守护程序脚本,而是认为我只是使用了输出重定向(`2>&1

file`部分),但这也没有退出 - 我在终端中得到一个空行,就像它正在等待输出/错误一样。

我也尝试将进程置于后台,但是一旦我关闭终端,进程也会被终止。

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


阅读 188

收藏
2022-03-07

共1个答案

小编典典

几乎每个 Linux 发行版都带有 systemd,这意味着 永远不再需要监视、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 myapp.js

将您的服务文件复制到/etc/systemd/system.

开始它systemctl start myapp

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

查看日志journalctl -u myapp

这取自 How we deploy node apps on Linux, 2018
edition
,其中还包括生成 AWS/DigitalOcean/Azure CloudConfig 以构建 Linux/node
服务器(包括.service文件)的命令。

2022-03-07