由于这篇文章多年来受到了很多关注,我在这篇文章的底部列出了每个平台的顶级解决方案。
原帖 :
我希望我的 node.js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行。我已经用谷歌搜索了这个并想出了这个教程,但是它没有按预期工作。因此,我没有使用该守护程序脚本,而是认为我只是使用了输出重定向(`2>&1
file`部分),但这也没有退出 - 我在终端中得到一个空行,就像它正在等待输出/错误一样。
我也尝试将进程置于后台,但是一旦我关闭终端,进程也会被终止。
那么,当我关闭本地计算机时,如何让它继续运行呢?
几乎每个 Linux 发行版都带有 systemd,这意味着 永远不再需要监视、PM2 等 - 您的操作系统已经处理了这些任务 。
制作一个myapp.service文件(显然,用您的应用程序名称替换“myapp”):
myapp.service
[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。
/var/www/myapp/app.js
#!/usr/bin/env node
chmod +x myapp.js
将您的服务文件复制到/etc/systemd/system.
/etc/systemd/system
开始它systemctl start myapp。
systemctl start myapp
启用它以在启动时运行systemctl enable myapp。
systemctl enable myapp
查看日志journalctl -u myapp
journalctl -u myapp
这取自 How we deploy node apps on Linux, 2018 edition ,其中还包括生成 AWS/DigitalOcean/Azure CloudConfig 以构建 Linux/node 服务器(包括.service文件)的命令。
.service