之前聽說過Node.js,只是知道它可以應用于服務器端,但是對很多具體的東西并不了解。今天在QCon上聽了袁鋒的分享《Node.js脫離了瀏覽器的Javascript》之后,頓時有了想立刻試一下的沖動。
根據參考文檔說明,從源代碼編譯安裝Node.js需要python2.6或者以上,而通過yum install python.x86_64只能得到2.4.3,所以也要通過源碼編譯安裝python。下面是命令:
# wget 
http://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz  # tar xzvf Python-3.2.3.tgz  
# cd Python-3.2.2  
# ./configure  
# make  
# make test  
# make install  
# wget 
https://nodeload.github.com/joyent/node/tarball/master  # mv master node.tar.gz  
# tar xzvf node.tar.gz  
# cd joyent-node-84d0b1b  
# ./configure --prefix=/opt/node/  
# make  
# make install  
# cd /usr/bin  
# ln -s /opt/node/bin/node node  
# ln -s /opt/node/bin/node-waf node-waf  
在上面的內容中,只用簡單的幾步就完成了安裝。雖然看起來安裝都是成功的,但是實際如何就要求我們寫一個程序來進行驗證一下。由于最近也在學習MongoDB,所以就寫一個讀取MongoDB數據庫:計算actionId為772的日志總數。
# npm install mongodb  
npm WARN 
mongodb@0.9.6-23 package.json: bugs['web'] should probably be bugs['url']  
npm WARN 
nodeunit@0.5.1 package.json: bugs['web'] should probably be bugs['url']    
> 
mongodb@0.9.6-23 install /root/develop/node/node_modules/mongodb  
> bash ./install.sh    
================================================================================  
=                                                                              =  
=  To install with C++ bson parser do <npm install mongodb --mongodb:native>   =  
=  the parser only works for node 0.4.X or lower                               =  
=                                                                              =  
================================================================================  
Not building native library for cygwin  
Using GNU make  
mongodb@0.9.6-23 ./node_modules/mongodb
var http = require('http');  
var mongodb = require('mongodb');    
http.createServer(function(req, res){  
  res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});  
  mongodb.connect('mongodb://localhost:40202/log', function(err, conn){  
    conn.collection('log', function(err, coll){  
      coll.count({'action': 772}, function(err, count){  
        res.write('The total of action 772 is ' + count + "./n");  
        res.end();  
      });  
    });  
  });  
}).listen(3000, '127.0.0.1');    
console.log('Server running at 
);