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 相关文章推荐
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
详谈jQuery中的this和$(this)
Nov 13 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
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
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
Python实现将文本生成二维码的方法示例
2017/07/18 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
最新大学生自我评价
2013/09/24 职场文书
技校个人求职信范文
2014/01/25 职场文书
年会主持词结束语
2014/03/27 职场文书
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python