Nodejs forever at windows server 2003

Nodejs forever at windows server 2003

我的node运行环境为windows server 2003。 现在遇到一个小麻烦,就是我运行时候,必须有一个CMD窗口。 我尝试过直接使用forever, 也试过使用winser , nodemon。但是都不行。 Google出来的,有人用iisnode来作生成后台服务。但因为机器不是本人的,所以不想再上去折腾装iis。 请问有高手有这方面的经验么?

7 回复

在Windows Server 2003上运行Node.js应用时,确实可能会遇到一些挑战,特别是如何让Node.js应用在后台持续运行而不需要保持一个CMD窗口打开。虽然forevernodemon等工具在Linux环境下非常流行,但在Windows系统上的支持可能有限或不稳定。不过,你可以考虑使用其他方法来确保你的Node.js应用在后台持续运行。

使用 nssm (Non-Sucking Service Manager)

nssm 是一个轻量级的服务管理器,可以帮助你将任何可执行文件转换成Windows服务。这意味着你可以创建一个服务来运行你的Node.js应用,即使CMD窗口关闭了,服务仍然会继续运行。

步骤:

  1. 下载并安装 nssm

  2. 创建服务

    • 打开命令提示符(以管理员身份)。

    • 运行以下命令来创建服务(假设你的Node.js应用位于 C:\path\to\yourapp,并且入口文件名为 app.js):

      nssm install YourAppName C:\path\to\node.exe C:\path\to\yourapp\app.js
      

      这条命令将会创建一个名为 YourAppName 的服务,该服务会在系统启动时自动运行。

  3. 启动服务

    • 通过服务管理器(services.msc)或命令行启动服务:

      net start YourAppName
      
  4. 检查服务状态

    • 你可以通过服务管理器(services.msc)或命令行检查服务的状态:

      sc query YourAppName
      

示例

假设你的Node.js应用位于 C:\myapp,并且入口文件名为 server.js,你可以按照以下步骤操作:

# 创建服务
nssm install MyNodeApp C:\Program Files\nodejs\node.exe C:\myapp\server.js

# 启动服务
net start MyNodeApp

这样,即使你关闭了CMD窗口,你的Node.js应用也会作为一个后台服务继续运行。

总结

通过使用 nssm 将Node.js应用转换为Windows服务,可以有效解决在Windows Server 2003上需要保持CMD窗口开启的问题。这种方法不仅简单易行,而且可以确保你的应用在系统重启后也能自动启动。


用nssm试试?直接做成服务。还可以守护node进程。

forever-monitor + Nssm

用过NSSM, 但似乎在2003上面跑不起来啊。你有过经验么?

我的需求都没考虑monitor, 只要能后台就行。可好像都行不通。请问有在2003跑NODE这方面的经验么?

在Windows Server 2003上运行Node.js应用并希望实现后台运行,可以考虑使用nssm(Non-Sucking Service Manager)将Node.js应用作为Windows服务运行。这种方法不需要占用命令行窗口,并且可以在系统启动时自动运行。

示例步骤:

  1. 下载nssm

  2. 解压nssm

    • 将下载的压缩包解压到任意目录,例如 C:\nssm
  3. 创建Node.js服务

    • 打开命令提示符(管理员模式),然后执行以下命令:
      C:\nssm\win64\nssm.exe install NodeApp
      
    • 在弹出的界面中填写以下信息:
      • Path: Node.js的可执行文件路径,例如 C:\Program Files\nodejs\node.exe
      • Startup directory: 你的Node.js项目的根目录,例如 C:\myproject
      • Arguments: 你的入口文件路径,例如 app.js
  4. 启动服务

    • 使用服务管理工具或命令行启动服务:
      net start NodeApp
      
  5. 验证服务状态

    • 可以通过服务管理工具或者命令行查看服务状态:
      sc query NodeApp
      

示例代码:

假设你有一个简单的Node.js应用位于 C:\myproject 目录下,入口文件为 app.js,内容如下:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

注意事项:

  • 由于Windows Server 2003已经不再支持更新,可能存在一些兼容性问题。
  • 确保Node.js版本与系统兼容,通常Node.js LTS版本较为稳定。
  • 如果服务器是他人管理的,建议先征得同意再进行安装或配置更改。

通过上述方法,你可以将Node.js应用作为Windows服务运行,无需保持命令行窗口打开。

回到顶部