如何让 Node.js 后端作为一个服务运行在 Windows 服务器上。

如何让 Node.js 后端作为一个服务运行在 Windows 服务器上。

一个比较守旧的老师的要求、写完了功能之后不喜欢运行在 Linux 服务器上的,要跑在 Windows 上。

首先呢,我用 Windows 上的 pm2 服务,他说还要用 cmd,不能直接放到 iis 上吗? 然后我一搜,还真有个 iisNode 的插件,我折腾了半天,复杂程度比 pm2 有过之而无不及。 所以问一下各位有没有经验、有更好的方式

30 回复

在 cmd 里面用 pm2 命令启动(

docker 貌似是一个不错的选择

在 cmd 里面用 pm2 命令启动 +1

pm2 怎么就复杂了,写个代码 cmd 都不会用吗。。。。

守旧的老师?退休算了

windows 的 docker 一点也不好用……应该比不上 pm2

这个用过,效果不错,的确是外来的和尚会念经

这不是守旧,这是憨
还要用 iis ? 脱裤子放屁

老师可能是会用 Linux,要理解

弱智老师

放 IIS ?我笑了。🙃🙄
这老师,你能访问使用看得到结果就可以了,真以为自己是很牛 B 的甲方呢?
现在学校还有这种守旧却要求很高的老师?

网络中心的主任

不要这么说嘛,我还是很尊重他的,我认为学校的网络拓扑做的很好,五六十岁的老师了,已经不想自己动手写程序了。

#10

#13

可能目标服务器上有正在运行的依赖 IIS 的项目, 这种时候不得不妥协

pm2 已经够简单了。。。

我试过用 WinSW 可以把 nginx 做成 windows 服务,nodejs 改下配置也可以用,推荐试试。

谢谢,为什么呢。早知道用 asp 了,我的过失

#18 这个也是没办法预知的嘛 😂

你可以试试用 C# 写个 WinForm 程序来后台运行 cmd 指令, 平时最小化到托盘区 (笑, 以前我在学校做校内服务的时候用过的骚操作)

不过看了楼上的 NSSM, 感觉用那个可能还比较省事

pm2 复杂?

开个虚拟机 😁

srvany/nssm 绝对满足你的要求,因为没写 wind2 之前我也用他们托管过 node.exe

虚拟机,port forwarding 出来

那就用 golang 来写就好.跨平台

goLang 能解决我这个问题吗,Windows 也不是不能跑 Node。

nssm 就能解决问题,十几分钟搞定。

Nssm +1、作为一个服务

之前尝试在公司已经跑了一堆业务的 Windows Server 2012 上部署 Node.js 项目,最开始也尝试了 PM2,但是各种问题导致 PM2 就是没法用,最后用 NSSM 搞定了,操作起来也很简单,看一下相关的文档和网上的教程就行。
这是我当时研究 NSSM 做的笔记,希望能帮到你: https://github.com/Dream4ever/Knowledge-Base/issues/59

要让 Node.js 后端作为一个服务运行在 Windows 服务器上,你可以使用 nssm(Non-Sucking Service Manager)来将 Node.js 应用程序注册为 Windows 服务。以下是具体步骤:

  1. 安装 Node.js 和 npm: 确保已在 Windows 服务器上安装了 Node.js 和 npm。可以从 Node.js 官网 下载并安装。

  2. 安装 nssm: 下载 nssm,可以从 nssm 官网 获取。下载后解压,并将 nssm.exe 所在目录添加到系统的 PATH 环境变量中。

  3. 编写 Node.js 应用: 确保你的 Node.js 应用有一个启动脚本,例如 app.js

  4. 使用 nssm 注册服务: 打开命令提示符(以管理员身份运行),然后运行以下命令来注册服务:

    nssm install MyNodeService
    

    在出现的 GUI 中,配置以下字段:

    • Path: 指向 node.exe 的完整路径,例如 C:\Program Files\nodejs\node.exe
    • Startup directory: 你的 Node.js 应用所在的目录
    • Arguments: app.js(或其他启动脚本)
  5. 启动服务: 使用以下命令启动服务:

    nssm start MyNodeService
    
  6. 验证服务状态: 你可以通过 Windows 服务管理器或使用以下命令查看服务状态:

    nssm status MyNodeService
    

这样,你的 Node.js 应用就会作为 Windows 服务在后台运行。

回到顶部