Node.js 实战(一)之—防灾备措施
前言
博客系统上线已经3个多月了,中间没有出现过宕机事故,一直稳定运行。自己写的代码还是挺严谨的,小小鼓励一下!上周对云服务器进行了一次内存扩容,扩容后重启了一次服务器。虽然过程很短,但是因重启后导致一系列服务也需要手动启动,却是比较繁琐的。做为一个高级程序猿,怎么能让自己干这么低级的事呢?做到自动化、智能化才是我们的追求,向高逼格看齐。今天我们就来做一些防灾备措施。
本文原文地址:https://www.limitcode.com/detail/599c238769e95702e078023d.html
Mongodb 开机自动启动
把Mongodb安装成Windows服务并设置启动方式为自动启动。这样服务器重启的时候,就不用手动启动Mongodb实例了。具体做法如下:
管理员模式运行CMD窗口,管理员模式运行CMD窗口,管理员模式运行CMD窗口,重要的事情说3遍,否则安装服务会没有权限。然后cd 到Mongodb的安装目录下的bin目录,
运行命令:mongod --dbpath=db路径 --logpath=log路径 --install
回车后没有任何提示即为安装成功,控制面板——>管理工具——>服务,打开找到MongoDB服务确定安装成功。接着我们把MongoDB服务启动类型设置成自动启动,可以鼠标操作,也可以使用命令行的方式。为了提高逼格,博主这里使用命令行的方式。
运行命令:sc config MongoDB start=auto
设置为自动启动后,运行 MongoDB 服务,启动一个MongoDB实例。
运行命令:sc start MongoDB
至此,我们对MongoDB的优化告一段落。
Node 网站开机自动启动
标题描述的不太清晰,为了防止出现误导,请允许我再墨迹几句。我们实际要做的是开机实现博客网站的自动启动,也就是自动运行 node server.js 命令来启动我们的网站。要实现这个其实不难,可以通过批处理、编写自己的Windows服务来达到效果。博主比较懒,不想自己写,所以这里我们借助其他大牛写的开源 node-windows 模块来实现。
模块介绍地址:https://github.com/coreybutler/node-windows
在博客项目根目录下新建一个 nodeWindowServer.js 和package.json同级,名字可以随意取。然后编写如下代码:
var path=require("path");
var Service = require('node-windows').Service;
var svc = new Service({
name:'MyBlogs',//服务名称
description: '暗夜余晖的个人博客网站',//服务的描述
script: path.join(__dirname,'server.js')//网站的启动脚本
});
svc.on('install',function(){
svc.start();
});
svc.install();
管理员身份打开CMD窗口,然后cd到项目目录,运行以下命令安装服务:
node nodeWindowServer.js
安装完成后会在项目根目录下生成一个 daemon 文件夹,这里面存放的就是windows 服务的可执行文件。打开 管理工具—> 服务 可以看到已经添加了名称为MyBlogs的服务,并且启动类型为自动启动。
细心的博友有没有发现一个问题?
我们的MongoDB和网站都是开机自动启动,他俩之间是没有先后顺序之分的。但是网站却依赖于MongoDB服务,怎么做到当MongoDB启动后我们的网站才会启动呢?这个就需要我们做服务之间的依赖设置了。然后我们修改nodeWindowServer.js中的代码,加入依赖设置。
var path=require("path");
var Service = require('node-windows').Service;
var svc = new Service({
name:'MyBlogs',//服务名称
description: '暗夜余晖的个人博客网站',//服务的描述
script: path.join(__dirname,'server.js'),//网站的启动脚本
dependencies:"MongoDB",//添加服务依赖
});
svc.on('install',function(){
svc.start();
});
svc.install();
可以看到代码中我们添加了 dependencies :"MongoDB" 配置节点。接着把MyBlogs.exe服务删除,重新安装服务。安装完成后,我们在 MyBlogs 服务的属性中查看依赖关系,发现并没有添加上MongoDB的依赖(如果服务安装不成功,可以将项目根目录下的daemon文件夹删除后重试)。出现这个问题是因为模块本身的BUG原因,博主也是被坑惨了,最后无奈之下查看源码才发现并不是自己的问题。下面附上解决方案:

Node.js 实战(一)之—防灾备措施的更多相关文章
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...
- Node.js实战(二)之HelloWorld示例
经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks
视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层
视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...
随机推荐
- openresty开发系列26--openresty中使用redis模块
openresty开发系列26--openresty中使用redis模块 在一些高并发的场景中,我们常常会用到缓存技术,现在我们常用的分布式缓存redis是最知名的, 操作redis,我们需要引入re ...
- windows nginx 快捷启动关闭批处理脚本
:: 关闭回显,即执行本脚本时不显示执行路径和命令,直接显示结果 @echo off rem @author luwuer color f8 set NGINX_DIR=D:\nginx-1.12.2 ...
- Qt编写自定义控件62-探探雷达
一.前言 随着移动互联网的盛行,现在手机APP大行其道,每个人的手机没有十几个APP都不好意思说自己是现代人,各种聊天.购物.直播.小视频等APP,有个陌生人社交的APP叫探探,本人用过几次,当然不是 ...
- 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学
com.cym.shuXue02--前拼后广--开心学数学
- 常用OID(SNMP)
系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...
- matplot中的对象
figure:图表,可以理解为一个空间,二维情况下是一个平面 axes:坐标系,空间中的坐标系,一个空间可以有多个坐标系 axis:坐标轴,坐标系中的一个坐标轴,一个坐标轴只属于一个坐标系 画点:sc ...
- RBF神经网络学习算法及与多层感知器的比较
对于RBF神经网络的原理已经在我的博文<机器学习之径向基神经网络(RBF NN)>中介绍过,这里不再重复.今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比. ...
- layui开关switch显示不全问题
先看效果: 开关显示不全,高度也不对称. 解决: 在所用到的html/jsp中自己加css .layui-form-switch { width: 52px; height: 23px; } 再看效果 ...
- 性能测试监控:Jmeter+Collectd+Influxdb+Grafana
系统性能指标图示例: 采集数据(collectd)-> 存储数据(influxdb) -> 显示数据(grafana) InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常 ...
- mysql navcat备份使用详解
mysql navcat备份使用详解 点击备份 然后新建备份 然后选择要备份的表 就可以了 以后这个表删除了 内容变更了 都可以点击 还原备份就可以了