Node.js 切近實戰(十二) 之Linux部署

以前的話咱們的項目都是跑在windows上,今天咱們要將咱們的程序跑到linxu機器上。在看linux部署以前,咱們先看一下node.js相似於asp.net mvc的過濾器或者叫攔截器。在app.js中咱們加入以下代碼html

1html5

2node

3linux

4mongodb

5windows

6centos

7api

8瀏覽器

9服務器

10

11

12

13

14

15

16

17

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的使用。

1

2

3

var log4js = require('log4js');

var log4jsConfig = require('./framework/config/log4js_config.js');

log4js.configure(log4jsConfig.config);

ok,接下來咱們看一下log4js的配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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。

wKioL1fO2dKxokvTAAAvNV-X9f8131.png

OK,其實在app.js中咱們對記錄進行了設置。

1

2

3

4

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。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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,通過設置

1

replaceConsole: true

使得console的內容能夠在窗口輸出,而不是僅寫入log文件。

1

2

3

4

5

6

7

8

9

[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

1

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

OK,關於log4js就說這麼多,畢竟只是個工具,你們本身下去看api就好了。

好了,接着咱們將改程序部署至linux個人centos5。

wKiom1fO25bhNU3GAAIUvDHlb3w611.png

有沒有注意到我桌面的ftp服務器192.168.80.1,沒錯就是我在win10搭建的ftp服務器。OK,咱們將node.js程序放到ftp,咱們再拷貝至centos。

wKiom1fO3C-xbP80AAA8uXumXWY200.png

ok,咱們把全部要用的東西都經過此方法拷貝至centos。

wKiom1fO3I-TE9q7AABVsnJ6Ihs116.png

咱們須要的是部署程序,mongodb,node.js for linux。好的,完成後,咱們先要啓動mongodb

wKioL1fO3U3CpusDAAIDZRbBrpo290.png

接着咱們經過node命令啓動程序。

wKioL1fO3uzBFP1JAABTqjI1HGA528.png

啓動成功,咱們在window上訪問一下

wKiom1fO3zfzzsVxAACRTj8mmx4498.png

有的人說了,你這個圖我怎麼知道是否是linux的ip。我如今就給你看兩張圖,一個是ip,

一個是centos的火狐瀏覽器。

wKioL1fO36yQNvvAAADFX9XmQ3s692.png

咱們再看一下linux下火狐的瀏覽效果

wKioL1fO4QzCbySEAACQerMyrZw780.png

這個瀏覽器估計有些老,不支持html5。OK最後咱們登陸進去看系統是否正常。

wKiom1fO4V3iebSkAADFO9uDTwI402.png

結束語

免費學習更多精品課程,登陸樂搏學院官網http://h.learnbo.cn/

或關注咱們的官方微博微信,還有更多驚喜哦~

 

 

本文出自 「技術創造價值」 博客,請務必保留此出處http://leelei.blog.51cto.com/856755/1847040

相關文章
相關標籤/搜索