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

  

  

最近项目中有一块服务是用节点。js实现的,运行环境是windows server 2008 R2,刚开始着手实现这块功能的时候时间很紧迫,随便写了个控制台程序就部署上去了……启动方式就是在CMD里输入节点主要。js。
  

  

然而这样搞肯定是不行的啊!这样搞的话,万一有哪个错误没捕获到,整个服务就挂了,虽然咱写的代码很严谨,跑了一个多月也没挂,但为了万无一失,还是得有个自动重启的能力。
  

  

而且更关键的问题是……现在这样好低啊……开机后需要手动启动,而且运行的时候一直会显示一个控制台……这根本就忍不了啊!

  

  
      <李>,支持崩溃后自动重启李   <李>,支持后台运行   <李>,开机自动启动李   
  

  

因为javascript的单线程运行方式,一点错误就彻底崩溃的特性,自动重启的解决方案自然也早就有了,比如pm2和永远,从功能上看,pm2比永远要强大不少,然而我只想要个“维持”,所以我选择了永远。
  

  

<强>先全局安装永远
  

        npm安装- g永远      

然后把启动用的蝙蝠脚本修改一下……
  

  

<强>旧的启动脚本:
  

        节点d: \ xxx \ main.js      

<强>使永远用后的:
  

        永远的开始- o。日志- e犯错。日志d: \ xxx \ main.js      

如果不出问题的话,应该就可以了~
  

  

然而每次你这样想的时候,就该出问题了_(:з)∠)_

  

永远这家伙居然不认windows下的绝对路径……假如我是在<代码> c: \ \用户管理员> c:\Users\管理员\ d: \ xxx \ 下面寻找主要。js……
  

  

节点。js程序作为服务并在windows下开机自启动(永远用)
  

  

没错,除非路径的第一个字符,是/否则就会被当成相对路径来处理。
  

  

坑爹啊。
  

  

或许是我用不惯windows的缘,故反正我是没找到好的解决办法,最终迫于无奈,在蝙蝠脚本中手动切换了一下盘符处理了
  

  

<强>最后的脚本:
  

        @echo掉   d:   永远的开始- o xxx/日志/H罩? e xxx/日志/犯错。日志——uid communityWorker“xxx/main.js      

其实我总是感觉这种做法不太对,但对windows实在不熟悉,如果谁有更好的办法也请评论告诉我

  

  

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

  

 node . js程序作为服务并在windows下开机自启动永远用

  

注册服务不行……那就只好用计划任务了……
  

  

新建一个计划任务,然后系统启动时的触发器,由这个计划任务来执行我们的蝙蝠

  

 node . js程序作为服务并在windows下开机自启动永远用

  

 node . js程序作为服务并在windows下开机自启动永远用

  

嘛……这种方法最后是生效了,唯一需要注意的就是安全选项中,一定要选中“不管用户是否登录都要运行”的选项! !
  

  

否则会在系统启动触发器被触发的时候,因为没有用户登录,所以直接跳过了这个计划任务,进而无法启动我们的服务。

  

 node . js程序作为服务并在windows下开机自启动永远用

  

虽然还有不完善的地方,但确实实现了预期的效果,最后说一句……windows服务器真TM麻烦……

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

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