多年来,由于这篇文章引起了很多关注,因此我在文章的底部列出了每个平台的最佳解决方案。
原始帖子 :
我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望服务器继续运行。我已经用谷歌搜索并提出了本教程,但是它没有按预期工作。因此,我没有使用该守护程序脚本,而是以为我只使用了输出重定向(该`2>&1
file`部分),但这也不会退出-我在终端中出现空白行,就像它在等待输出/错误一样。
我也尝试过将进程置于后台,但是一旦关闭终端,进程也会被终止。
那么,当我关闭本地计算机时如何使它运行?
2015年的答案 :几乎每个Linux发行版都随附systemd,这意味着 永久,monit,PM2等都不再需要- 您的OS已经可以处理这些任务 。
制作一个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在第一行。
/var/www/myapp/app.js
#!/usr/bin/env node
将您的服务文件复制到中/etc/systemd/system。
/etc/systemd/system
从开始systemctl start myapp。
systemctl start myapp
使它能够在启动时运行systemctl enable myapp。
systemctl enable myapp
查看日志 journalctl -u myapp
journalctl -u myapp
这取自 我们如何在Linux版2018年上部署节点应用程序 ,该 版本 还包括用于生成AWS / DigitalOcean / Azure CloudConfig来构建Linux /节点服务器(包括.service文件)的命令。
.service