最近项目中有一块服务是用节点。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……
没错,除非路径的第一个字符,是/否则就会被当成相对路径来处理。
坑爹啊。
或许是我用不惯windows的缘,故反正我是没找到好的解决办法,最终迫于无奈,在蝙蝠脚本中手动切换了一下盘符处理了
<强>最后的脚本:强>
@echo掉 d: 永远的开始- o xxx/日志/H罩? e xxx/日志/犯错。日志——uid communityWorker“xxx/main.js
其实我总是感觉这种做法不太对,但对windows实在不熟悉,如果谁有更好的办法也请评论告诉我
既然是自动启动嘛,我首先想到的就是注册一个自启动的服务,然而注册的似乎只能是一个exe,用蝙蝠注册服务会报出一个1053年的错误
注册服务不行……那就只好用计划任务了……
新建一个计划任务,然后系统启动时的触发器,由这个计划任务来执行我们的蝙蝠
嘛……这种方法最后是生效了,唯一需要注意的就是安全选项中,一定要选中“不管用户是否登录都要运行”的选项! !
否则会在系统启动触发器被触发的时候,因为没有用户登录,所以直接跳过了这个计划任务,进而无法启动我们的服务。
虽然还有不完善的地方,但确实实现了预期的效果,最后说一句……windows服务器真TM麻烦……
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。