Nodejs forever at windows server 2003
Nodejs forever at windows server 2003
我的node运行环境为windows server 2003。 现在遇到一个小麻烦,就是我运行时候,必须有一个CMD窗口。 我尝试过直接使用forever, 也试过使用winser , nodemon。但是都不行。 Google出来的,有人用iisnode来作生成后台服务。但因为机器不是本人的,所以不想再上去折腾装iis。 请问有高手有这方面的经验么?
在Windows Server 2003上运行Node.js应用时,确实可能会遇到一些挑战,特别是如何让Node.js应用在后台持续运行而不需要保持一个CMD窗口打开。虽然forever
、nodemon
等工具在Linux环境下非常流行,但在Windows系统上的支持可能有限或不稳定。不过,你可以考虑使用其他方法来确保你的Node.js应用在后台持续运行。
使用 nssm
(Non-Sucking Service Manager)
nssm
是一个轻量级的服务管理器,可以帮助你将任何可执行文件转换成Windows服务。这意味着你可以创建一个服务来运行你的Node.js应用,即使CMD窗口关闭了,服务仍然会继续运行。
步骤:
-
下载并安装
nssm
:- 访问
nssm
的官方网站(https://nssm.cc/),下载最新版本的nssm
。 - 解压下载的文件,并将解压后的目录添加到系统的PATH环境变量中。
- 访问
-
创建服务:
-
打开命令提示符(以管理员身份)。
-
运行以下命令来创建服务(假设你的Node.js应用位于
C:\path\to\yourapp
,并且入口文件名为app.js
):nssm install YourAppName C:\path\to\node.exe C:\path\to\yourapp\app.js
这条命令将会创建一个名为
YourAppName
的服务,该服务会在系统启动时自动运行。
-
-
启动服务:
-
通过服务管理器(services.msc)或命令行启动服务:
net start YourAppName
-
-
检查服务状态:
-
你可以通过服务管理器(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服务运行。这种方法不需要占用命令行窗口,并且可以在系统启动时自动运行。
示例步骤:
-
下载nssm
- 下载nssm最新版本:https://nssm.cc/download
-
解压nssm
- 将下载的压缩包解压到任意目录,例如
C:\nssm
。
- 将下载的压缩包解压到任意目录,例如
-
创建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
- Path: Node.js的可执行文件路径,例如
- 打开命令提示符(管理员模式),然后执行以下命令:
-
启动服务
- 使用服务管理工具或命令行启动服务:
net start NodeApp
- 使用服务管理工具或命令行启动服务:
-
验证服务状态
- 可以通过服务管理工具或者命令行查看服务状态:
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服务运行,无需保持命令行窗口打开。