Node.js 切近实战(十二) 之Linux部署

之前的话我们的项目都是跑在windows上,今天我们要将我们的程序跑到linxu机器上。在看linux部署之前,我们先看一下node.js类似于asp.net mvc的过滤器或者叫拦截器。在app.js中我们加入如下代码

var beforeRequest = function (req, res, next) {
    if (req.originalUrl == ‘/‘ 
        || req.originalUrl == ‘/login‘ 
        || req.originalUrl == ‘/config‘ 
        || req.originalUrl == ‘/user‘ 
        || req.originalUrl == ‘/logInout‘) {
        next();
    }
    else if (session.user == null || session.user == undefined || !session.user.UserID) {
        res.redirect(‘/login‘);
    }
    else {
        next();
    }
}

app.use(beforeRequest);

此时当有请求到达时,就会先判断用户是否登录,如果未登录,则跳转至登陆界面。但是要确保该代码在注册路由之前。

app.use(‘/‘, routes);

OK,接下来我们在看一下node.js平台上log4js的使用。

var log4js = require(‘log4js‘);
var log4jsConfig = require(‘./framework/config/log4js_config.js‘);
log4js.configure(log4jsConfig.config);

ok,接下来我们看一下log4js的配置

exports.config = 
{
    appenders: [
        {
            type: ‘console‘,
            category: "console"
        }, {
            type: ‘file‘,
            filename: ‘logs/info.log‘, 
            maxLogSize: 1024,
            backups: 1,
            category: ‘log_info‘
        }, {
            
            type: "datefile",  
            filename: "logs/error",
            alwaysIncludePattern: true,  
            pattern: "-yyyy-MM-dd-hh.log",
            category: "log_error"
        }, {
            category: "log_trace",  
            type: "datefile",  
            alwaysIncludePattern: true,  
            pattern: "-yyyy-MM-dd-hh.log",
            filename: "logs/trace"
        }
    ],
    replaceConsole: true,
    levels:  
    {
        console: "ALL",  
        log_error: "ALL",  
        log_info: "ALL",
        log_trace: "ALL"
    }
}

OK,经过这样的配置之后,我们看一下记录的log。

OK,其实在app.js中我们对记录进行了设置。

var loggerInfo = log4js.getLogger(‘log_info‘);
var loggerError = log4js.getLogger(‘log_error‘);
var loggerTrace = log4js.getLogger(‘log_trace‘);
app.use(log4js.connectLogger(loggerInfo, { format: ‘:method :url‘ }));

定义了三种log,error分别记录404和500。

app.use(function (req, res, next) {
    loggerError.error(req.url);
    var err = new Error(‘Not Found‘);
    err.status = 404;
    err.message = "The resource you are look for is not found!";
    next(err);
});

app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    loggerError.error(err.message);
    res.render(‘error‘, {
        message: err.message,
        error: {}
    });
});

而info用来记录console.log,经过设置

replaceConsole: true

使得console的内容可以在窗口输出,而不是仅写入log文件。

[2016-08-01 14:17:01.074] [INFO] log_info - GET /user/file?pageIndex=0&pageSize=10&isShared=false&fileName=
[2016-08-01 14:17:02.408] [INFO] log_info - GET /page?q=s
[2016-08-01 14:17:02.841] [INFO] log_info - GET /docshare
[2016-08-01 14:17:04.674] [INFO] log_info - GET /user/sharedfile?userId=&pageIndex=0&pageSize=10&fileName=&startDate=&endDate=
[2016-08-01 14:17:08.921] [INFO] log_info - GET /page?q=u
[2016-08-01 14:17:11.713] [INFO] log_info - GET /page?q=r
[2016-08-01 14:17:11.919] [INFO] log_info - GET /file/auth
[2016-08-01 14:17:13.628] [INFO] log_info - GET /user/file?pageIndex=0&pageSize=10&isShared=true&startDate=Fri%20Jul%2001%202016%2000:00:00%20GMT+0800%20(й)&endDate=Mon%20Aug%2001%202016%2014:17:11%20GMT+0800%20(й)&fileName=
[2016-08-01 14:17:21.512] [INFO] log_info - GET /page?q=c

而且格式就是上面设置的http method+URL

app.use(log4js.connectLogger(loggerInfo, { format: ‘:method :url‘ }));

OK,关于log4js就说这么多,毕竟只是个工具,大家自己下去看api就行了。

好了,接着我们将改程序部署至linux我的centos5。

有没有注意到我桌面的ftp服务器192.168.80.1,没错就是我在win10搭建的ftp服务器。OK,我们将node.js程序放到ftp,我们再拷贝至centos。

ok,我们把所有要用的东西都通过此方法拷贝至centos。

我们需要的是部署程序,mongodb,node.js for linux。好的,完成后,我们先要启动mongodb

接着我们通过node命令启动程序。

启动成功,我们在window上访问一下

有的人说了,你这个图我怎么知道是不是linux的ip。我现在就给你看两张图,一个是ip,

一个是centos的火狐浏览器。

我们再看一下linux下火狐的浏览效果

这个浏览器估计有些老,不支持html5。OK最后我们登录进去看系统是否正常。

木有什么问题,ok,今天就到这里。后面会多多的玩linux,什么.net core什么玩意的我们也玩玩。

时间: 2024-10-13 09:09:37

Node.js 切近实战(十二) 之Linux部署的相关文章

Node.js 切近实战(十) 之Excel在线(共享文件)

本篇文章我就不罗嗦了,主要讲的是共享文件列表,主要功能就是查看别人共享的文件. 打开该界面,用户可以在左侧看到共享文件的人员的信息,点击该人可以查看该人共享了哪些文件.在Grid里面有查看文件修改记录,编辑,标记为星标文件等功能.OK,我们先看一下UI代码. div(style='padding:5px;')  include ../common/search.jade .row-margin  hr.panel-line   #splitter(style='height:750px;')  

Node.js 切近实战(二) 之图书管理系统

上一篇Node.Js切近实战讲述了如何在VS上搭建Node.Js开发环境,相信看过那篇博客的同学,你已经对Node.Js有了好感,多了解些技术还是很有必要的.所谓实战见真功,还是要实战才行.我看博客园上一些专家荣誉的人写的博客,全是理论,没有实战,没有实战就没有发言权.熟能生巧,实战出理论. 我们看一下项目结构 典型的NodeJs三层架构,controller,model,view,这里每个部分什么职能,我就不多说了. 首先我们看一下登录界面,先上图,我看博客的时候,会首先看博客中有没有图,比如

Node.js 切近实战(七) 之Excel在线(文件&文件组)

最近西安的天气真他妈的热,感觉还是青海的天气美,最高温28度.上周逛了青海湖,感觉还是意犹未尽,其实我还是很喜欢去一趟西藏的,但是考虑到花费也没人陪我,我暂时放弃这个念头.计划去一下重庆或者甘南,也许是现实的. OK,废话不多说,今天我们来看一下Excel在线部分的文件和文件组.首先我们来看一下页面,调一下胃口.俗话说无图无真相,先看图. 没错,还是Telerik Kendo UI,其实我面试的时候当听到别人说自己用的是EasyUI和ExtJs的时候,我就不那么上心,但是如果有人用的是Kendo

Node.js 切近实战(二) 之图书管理系统(图书信息录入)

上一节我们讲了图书管理系统的登录,相信大家对jade模板和angular js也有了了解,今天的话我们来看一下图书信息录入.在这里我们准备使用Nosql数据库,本篇博客中使用的是MongoDB.OK.Mongo DB的安装我就不多说了,那么Node.Js平台使用mongoDB我们使用什么扩展包好呢,我觉得还是mongoose比较合适,封装了好多针对mongodb的方法,简单易用. 首先我们来看一下图书model的设计bookInfo.js. var mongoose = require('mon

Node.js 切近实战(一) 之环境搭建

哥们先来吐槽一下,最近面试别人的一些经历.有的小伙干了五年,这五年干的是同样的活,三层架构,ASP.NET MVC,Jquery.看简历还能用,结果面试中才知道这五年自己没写过泛型类,泛型方法,委托自定义事件也都没用过,还说抽象类中必须都是抽象方法才可以.还有一小伙,干了十年,泛型委托一概不清楚.最近有个干了9年的,也呆过几家外企,感觉还挺牛,来了之后果然牛,敲着个二郎腿,声音比我还大,搞得好像他在面试我.9年了,只会最常用的一些东西,asp.net mvc,asp.net webforms,W

Node.js 切近实战(十一) 之实时通讯

曾经在幽幽暗暗反反复复中追问,才知道平平淡淡从从容容才是真,听着歌曲,写博客,感觉就来了. 今天我们主要看一下Socket.IO实时通讯,先看一下界面. .row  .col-md-9   .panel.panel-primary    .panel-heading     h3.panel-title(style='font-size:13px;') Chat Message    .panel-body#div_msgbody(style='min-height:590px;max-heig

Node.js 切近实战(九) 之Excel在线(在线编辑)

最近实在是太想去西藏了,我自己总是喜欢人少的旅游地,喜欢一望无垠,喜欢蓝天白云大草原. 之前有一节我给大家讲过文件列表,如下,今天我们要讲的就是Excel在线编辑. 当我们双击文件图标的时候会跳转到一个Excel修改界面,如下. ok,这里我们使用的依然是Telerik Kendo UI中的SpreadSheet,看一下这个Spread Sheet是如何用的. 我们定义一个spreadsheet的div,我们看一下这个div怎么生成sheet. $("#spreadsheet").ke

Node.js 切近实战(二) 之图书管理系统(图书查询)

最近又当上了Master,负责带项目,有时候,遇到的问题我很郁闷.比如一个Story,需求中说的是将单个修改改为批量修改,举个例子,商品信息修改,之前是用一个商品id修改,但是现在改成多个商品id修改.我的意思是直接将文本框宽度高度加大,支持回车换行就行了,然后再将API修改为支持批量查询.这个界面上上面是一个Grid,下面是一个表单,选择Grid的数据后,会加载到下面表单.只能加载一条下去,就因为这个,有人提出如果加载一个下去,那么大个文本框只显示一个选中的商品id,视觉上无法接受.说是要将选

Node.js 切近实战(八) 之Excel在线(文件权限)

最近美国又他妈的皮痒了,在南海找事,还说什么中国必须接受南海仲裁结果,我去你大爷的,你以为你是谁啊.说实话只要我们要决一死战的勇气,还管什么华盛顿航母,佛吉尼亚潜艇,大不了大家一起死,不,全世界一起死.怎么个死法,中国惹急了先给俄罗斯来几颗核弹,然后俄罗斯反击中国的同时,也会给欧洲扔几颗核弹,给美国扔很多核弹,然后欧洲英法会给其他国家扔核弹,美国给世界扔核弹,俄罗斯只给北冰洋扔就行了,中国给美国和太平洋扔就行了,这样世界就不复存在了. 今天我们来看一下文件权限管理,这个其实是对共享出去的文件的一