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


Original post:

我要我的 node .js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行.我在谷歌上搜索了这个,找到了这个tutorial,但它并没有达到预期的效果.因此,我没有使用这个守护程序脚本,我以为我只是使用了输出重定向(2>&1 >> file部分),但这也不存在——我的终端中有一个空行,好像它在等待输出/错误.

我还试图将进程置于后台,但一旦我关闭终端,进程也会被终止.

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


Top solutions:

推荐答案

How do I run a Node.js application as its own process?个答案中复制我自己的答案

2015 answer:几乎每个Linux发行版都有systemd,也就是forever, monit, PM2, etc are no longer necessary - your OS already handles these tasks.

制作一个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

Note if you're new to 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的日志(log)

这取自100,其中还包括生成AWS/DigitalOcean/Azure CloudConfig以构建Linux/node服务器(包括.service文件)的命令.

Node.js相关问答推荐

Node.js中Redis的并发问题

一个函数中的两个依赖的NodeJS数据库操作.如果第二个失败了怎么办?

Socket.io 未将用户加入给定房间

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

找不到 vue-template-compiler@2.6.14 的匹配版本 | Shopware 6.5 更新后的 node 问题

Redis Typescript 删除方法类型转换

SvelteKit应用程序立即退出,没有错误

处理嵌套元素时,使用xml2js库解析XML时发生错误

发布请求不使用 Nodejs 更新 MongoDB 中的标头信息

数据未被中间件解析

(Mongoose) 删除 TTL 字段失败

使用 create-expo-app 时如何更改 webpack-config.js 中的哈希函数?

nuxt:在 docker 镜像中找不到

表达限制资源属于特定用户的优雅方式

AJAX 和 Node JS:在我的服务器中接收空数据

提供静态文件到底是什么意思?

如何可靠地散列 JavaScript 对象?

使用 MongoDB 更新嵌套数组

为什么我们要为 Angular 2.0 安装 Node.js?

从 React(同构应用程序)进行 API 调用时出现Access-Control-Allow-Origin问题