Windows系统下如何将NodeJS(NestJS)后端HTTP服务器作为后台进程运行?
无网环境Node.js脚本后台运行+自动启动解决方案
优先方案:打包为独立EXE(适配全平台,无需目标设备装Node.js)
这个方案最适合无网部署场景,你可以直接复用已经掌握的EXE后台进程添加逻辑:
- 提前在有网的开发设备上安装打包工具,执行
npm install -g pkg - 执行打包命令生成单EXE文件:
pkg app.js -t win-x64,可根据部署目标替换target参数,可选linux-x64、macos-x64等 - 打包生成的EXE文件可直接拷贝到无网设备运行,不需要依赖Node.js环境,和普通EXE程序的后台添加、自启配置逻辑完全一致
备选方案:目标设备预安装Node.js环境后配置服务
如果不需要打包为EXE,可提前将Node.js离线安装包拷贝到目标设备完成安装后,按部署系统类型配置:
Windows端(PC/Windows服务器)
- 单次后台运行PowerShell命令:
Start-Process -NoNewWindow -FilePath "node" -ArgumentList "你的app.js完整路径" -WindowStyle Hidden - 安装流程自动启动可二选一:
- 开机启动项配置:将上述PowerShell命令保存为
.ps1后缀的脚本文件,拷贝到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp目录,系统开机后会自动执行 - 注册为系统服务:提前下载nssm离线工具,安装时执行
nssm install 自定义服务名 "node.exe完整路径" "app.js完整路径",再执行net start 自定义服务名即可,服务默认开机自启、崩溃自动重启
- 开机启动项配置:将上述PowerShell命令保存为
Linux服务器端
- 单次后台运行命令:
nohup node 你的app.js完整路径 > /var/log/node_app.log 2>&1 & - 开机自启配置systemd服务:新建
/etc/systemd/system/node-app.service文件,写入以下内容:
[Unit]
Description=Node应用服务
After=network.target[Service]
ExecStart=/usr/bin/node 你的app.js完整路径
Restart=always
User=root[Install]
WantedBy=multi-user.target
- 执行激活命令即可生效:
systemctl daemon-reload && systemctl enable node-app && systemctl start node-app
安装流程集成说明
你可以将上述对应命令集成到安装包的安装完成回调逻辑中(比如用Inno Setup、NSIS制作安装包时均可配置安装后执行自定义命令),全程不需要联网即可完成自动配置。
内容的提问来源于stack exchange,提问作者Dagistan
相关产品推荐
相关产品推荐

