手机版

node.js程序作为服务并在windows下启动(永远使用)

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

最近,项目中的一个服务用node.js实现,运行环境是windows server 2008 R2。当我们开始实现这个功能时,时间很短,所以我们只需编写一个控制台程序并部署它.开始的方式是在CMD中输入node main.js。

但是,这样做绝对是不可能的!这样,如果没有捕获到任何错误,整个服务将会挂起。虽然我写的代码很严格,运行了一个多月也没有挂机,但是为了万无一失,还是要有自动重启的能力。

更关键的问题是.现在太低了.开机后需要手动启动,运行时总会显示一个控制台.这简直让人无法忍受!

目标:

支持崩溃后自动重启,支持后台运行,自动启动,自动重启,后台运行

由于javascript的单线程运行模式,出错就会彻底崩溃,自动重启的解决方案早就有了,比如pm2和forever。从功能上看,pm2比forever强大很多,但我只想要一个‘Keep Alive’,所以选择了forever。

首先在全球范围内永久安装

Npm永久安装-g,然后修改bat脚本用于启动.

旧启动脚本:

在节点d:\xxx\main.js中使用forever后:

永远开始-o out . log-e err . log d : \ XXX \ main . js如果没有问题,应该就可以了~

但是,每次这样想,就应该出问题了_(:))_

Forever在windows下认不出绝对路径…如果我在c:\Users\Administrator下执行命令,forever会尝试在c 3360 \ Users \ Administrator \ d : \ XXX下找到main.js…

是的,除非路径的第一个字符是/,否则它将被视为相对路径。

可怜的爸爸。

也许是因为我不习惯窗户。反正我也没找到好的解决办法。最后,我被迫在bat脚本中手动切换驱动器号

最终剧本:

@ echo off d : forever start-o XXX/logs/out . log-e XXX/logs/err . log-uid ' community worker ' XXX/main . js其实我总觉得这样不对,但是我对windows真的很陌生。如果有人有更好的方法,请评论告诉我。

启动后自动启动

既然是自动启动,我首先想到的就是注册一个自启动服务。然而,似乎只能注册一个exe,用bat注册一个服务会报告一个1053错误

注册服务无法工作.然后我们必须计划任务.

创建一个新的调度任务,然后在系统启动时触发,这个调度任务将执行我们的bat

良好的.这个方法终于生效了,唯一需要注意的是,在安全选项中,必须选择‘不管用户是否登录都运行’这个选项!

否则触发系统启动触发器时,由于没有用户登录,直接跳过计划任务,我们的服务无法启动。

虽然还有一些不完善的地方,但确实达到了预期的效果;最后,说.……windows服务器真的很麻烦.

摘要

以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。

版权声明:node.js程序作为服务并在windows下启动(永远使用)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。