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


Posted in Javascript onMarch 29, 2017

前言

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

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

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

目标:

  1.  支持崩溃后自动重启
  2.  支持后台运行
  3.  开机自动启动

自动重启和后台运行

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

先全局安装 forever

npm install -g forever

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

旧的启动脚本:

node d:\xxx\main.js

使用 forever 后的:

forever start -o out.log -e err.log d:\xxx\main.js

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

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

forever 这家伙居然不认 windows 下的绝对路径…… 假如我是在c:\Users\Administrator下执行的命令,那么 forever 就会尝试去 c:\Users\Administrator\d:\xxx\下面寻找main.js……

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

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

坑爹啊。

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

最后的脚本:

@echo off
d:
forever start -o xxx/logs/out.log -e xxx/logs/err.log --uid "communityWorker" xxx/main.js

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

开机自动启动

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

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

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

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

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

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

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

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

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

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

总结

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

Javascript 相关文章推荐
jquery select下拉框操作的一些说明
Apr 02 Javascript
浅析jQuery的链式调用之each函数
Dec 03 Javascript
jquery入门—编写一个导航条(可伸缩)
Jan 07 Javascript
js QQ客服悬浮效果实现代码
Dec 12 Javascript
JQuery控制radio选中和不选中方法总结
Apr 15 Javascript
JavaScript判断undefined类型的正确方法
Jun 30 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
jQuery的$.extend 浅拷贝与深拷贝
Mar 08 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jQuery实现字体颜色渐变效果的方法
Mar 29 #jQuery
整理关于Bootstrap导航的慕课笔记
Mar 29 #Javascript
javascript 中Cookie读、写与删除操作
Mar 29 #Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 #Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
Mar 29 #Javascript
Vue.js展示AJAX数据简单示例讲解
Mar 29 #Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 #Javascript
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JS & JQuery 动态添加 select option
2016/06/08 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
Python 字符串定义
2009/09/25 Python
python logging类库使用例子
2014/11/22 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
python中最小二乘法详细讲解
2021/02/19 Python
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
大学生求职信范文
2014/05/24 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书