以前的話咱們的項目都是跑在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。
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,通過設置
使得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。
有沒有注意到我桌面的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最後咱們登陸進去看系統是否正常。
結束語
免費學習更多精品課程,登陸樂搏學院官網http://h.learnbo.cn/
或關注咱們的官方微博微信,還有更多驚喜哦~
本文出自 「技術創造價值」 博客,請務必保留此出處http://leelei.blog.51cto.com/856755/1847040