如何自动启动节点服务?
Posted
技术标签:
【中文标题】如何自动启动节点服务?【英文标题】:How to start node service automatically? 【发布时间】:2015-06-28 16:05:09 【问题描述】:我已经使用 node js 开发了推送通知服务。为此,我必须每次都手动启动服务。
如何自动启动该服务?例如:如果我登录了,它应该会自动运行。在此先感谢
【问题讨论】:
这不是javascript问题,而是Windows程序调度的问题。 同意。好问题,但可能属于不同的堆栈交换站点,例如超级用户。 自托管应用程序不是很可靠。最好使用heroku或类似的。 :) 【参考方案1】:如果需要Windows启动时启动的Windows服务,可以使用sc create命令创建服务。
例如
sc create MyServiceName binpath= "C:\Program Files\nodejs\node.exe C:\somefolder\service.js" start= auto depend= "Tcpip/Afd" DisplayName= "A friendly name for my service"
注意 = 符号后面的空格。
您可以在这里找到更多信息:https://technet.microsoft.com/en-us/library/cc990289.aspx
如果您需要在登录时启动应用程序,您可以使用 regedit.exe 在以下注册表路径中创建一个包含您的命令的 REG_SZ 条目:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
【讨论】:
我收到“服务没有及时响应”错误,这可能是什么问题?【参考方案2】:有几种方法可以做到这一点,
创建一个带有 .cmd 扩展名的文件,然后简单地将您在 CMD 提示符上写入的内容添加为该文件的内容以启动服务。
node Path:\service.js 'Assumes path to node.exe is set
右键单击,然后创建此文件的快捷方式并将快捷方式拖到 Startup 文件夹。
开始>>所有程序>>右键启动>>打开
Task Scheduler也可以使用。
现在还存在一些 NPM 模块来管理节点进程。 看看forever 和PM2。
【讨论】:
感谢 Abdullah,我是 node.js 的新手。是否有任何替代方法来启动服务而不是 *.cmd。如果我将节点服务移动到云服务器(亚马逊)。如何启动此服务?【参考方案3】:在 Windows 中使用 Apache http://httpd.apache.org/docs/2.4/platform/windows.html。 安装 Apache 2 http://www.thesitewizard.com/apache/install-apache-2-windows.shtml
看到这个答案 Apache and Node.js on the Same Server
【讨论】:
【参考方案4】:如果您想将节点应用程序作为服务运行,我猜forever 是您需要在计算机上恶魔化您的应用程序的程序。
我使用它,它是 Nodejs 中事实上的方式,可以在 Windows 启动时启动程序,无需打开 Windows 会话或在启动中放置任何内容或使用任务调度程序。
【讨论】:
【参考方案5】:我在 linux 上永远使用它,它看起来像这里有一个 windows 版本: https://www.npmjs.com/package/forever-win
您可以使用它在 Windows 上守护您的节点应用程序。
【讨论】:
PM2 是 Forever 的更好替代品以上是关于如何自动启动节点服务?的主要内容,如果未能解决你的问题,请参考以下文章
关于.net服务启动注册到zookeeper,但是注册节点20分钟自动消失解决办法