Node.js 切近实战 之Linux部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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什么玩意的我们也玩玩。


本文出自 “技术创造价值” 博客,请务必保留此出处http://leelei.blog.51cto.com/856755/1847040

以上是关于Node.js 切近实战 之Linux部署的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 切近实战 之Excel在线

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

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

Node.js实战之Node多进程与JXcore 打包深入运用

Node.js项目实战:从编写代码到服务器部署

Node.js 实战之—防灾备措施