Node.js 實戰(一)之—防災備措施

前言

博客系統上線已經3個多月了,中間沒有出現過宕機事故,一直穩定運行。本身寫的代碼仍是挺嚴謹的,小小鼓勵一下!上週對雲服務器進行了一次內存擴容,擴容後重啓了一次服務器。雖然過程很短,可是因重啓後致使一系列服務也須要手動啓動,倒是比較繁瑣的。作爲一個高級程序猿,怎麼能讓本身幹這麼低級的事呢?作到自動化、智能化纔是咱們的追求,向高逼格看齊。今天咱們就來作一些防災備措施。html

本文原文地址:https://www.limitcode.com/detail/599c238769e95702e078023d.html

Mongodb 開機自動啓動

把Mongodb安裝成Windows服務並設置啓動方式爲自動啓動。這樣服務器重啓的時候,就不用手動啓動Mongodb實例了。具體作法以下:
管理員模式運行CMD窗口,管理員模式運行CMD窗口,管理員模式運行CMD窗口,重要的事情說3遍,不然安裝服務會沒有權限。而後cd 到Mongodb的安裝目錄下的bin目錄,node

運行命令:mongod --dbpath=db路徑 --logpath=log路徑 --install

回車後沒有任何提示即爲安裝成功,控制面板——>管理工具——>服務,打開找到MongoDB服務肯定安裝成功。接着咱們把MongoDB服務啓動類型設置成自動啓動,能夠鼠標操做,也可使用命令行的方式。爲了提升逼格,博主這裏使用命令行的方式。git

運行命令:sc config MongoDB start=auto

設置爲自動啓動後,運行 MongoDB 服務,啓動一個MongoDB實例。github

運行命令:sc start MongoDB

至此,咱們對MongoDB的優化告一段落。json

Node 網站開機自動啓動

標題描述的不太清晰,爲了防止出現誤導,請容許我再墨跡幾句。咱們實際要作的是開機實現博客網站的自動啓動,也就是自動運行 node server.js 命令來啓動咱們的網站。要實現這個其實不難,能夠經過批處理、編寫本身的Windows服務來達到效果。博主比較懶,不想本身寫,因此這裏咱們藉助其餘大牛寫的開源 node-windows 模塊來實現。windows

模塊介紹地址:https://github.com/coreybutler/node-windowsbash

在博客項目根目錄下新建一個 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緣由,博主也是被坑慘了,最後無奈之下查看源碼才發現並非本身的問題。下面附上解決方案:

相關文章
相關標籤/搜索