Feb 27th, 2011

node.js + express + haml install on ubuntu 10.10

少し出遅れてる感バリバリですが、node.jsをUbuntu 10.10@さくらVPSに入れてみた。
node.jsのWebフレームワークのexpressとテンプレート言語hamlで構成してみた。
hamlを選んだ理由は慣れてるから。というそれだけです。

まず必要なもののチェック。
公式によると python 2.4以上とlibssl-devが必要とのことなので、それぞれをチェック。
まず、Python

$ python --version  
2.6.6

OK

次にlibssl-dev。これは入れてなかったら sudo apt-get install libssl-dev で入れます。

$ dpkg -l libssl-dev  
Desired=Unknown/Install/Remove/Purge/Hold  
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend  
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)  
||/ Name           Version        Description  
+++-==============-==============-============================================  
ii  libssl-dev     0.9.8o-1ubuntu SSL development libraries, header files and 

ではインストール。
他の環境を汚染したく無いのもあって、/opt/nodejs 以下にインストールすることにしたので、適宜読み替えて下さい。

$ wget http://nodejs.org/dist/node-v0.4.1.tar.gz  
$ tar -zxf node-v0.4.1.tar.gz  
$ cd node-v0.4.1  
$ ./configure --prefix=/opt/nodejs  
$ make  
$ sudo make install 

インストールが終わったので、prefixとして指定した /opt/nodejs/bin を環境変数PATHに設定

$ export PATH=/opt/nodejs/bin:$PATH 

パッケージマネージャのnpmをインストール。
※ sudo のみだと環境変数の受け継ぎが出来ないので -i を忘れずに。

$ curl http://npmjs.org/install.sh | sudo -i sh 

次は express とhaml だけど、npmで入れるときにはhamlではなくてhamljsと公式に書いてあるので、その通りに。

$ sudo -i npm install express hamljs 

以上でインストールは終了。

次はすごく簡単なサンプルの作成。
まずサンプル用のディレクトリの作成して、ディレクトリ移動。

$ mkdir -p hello/views  
$ cd hello

そして以下のコードを hello.js として作成。

var express = require('express');                                                
var app     = express.createServer();  

app.get('/', function(req, res) {  
    res.render('index.hamljs', {  
        layout: false  
    });  
});  
app.listen(3000);  
console.log('running at port 3000');

次はviewテンプレート。views/index.hamljs として作成。

%html  
  %head  
    %title hello node.js!  
  %body  
    %hello  
      hello node.js

作成後保存したら、そのままのディレクトリで

 $ node hello.js 

とすることで
hello node.js
とだけ書かれたものが表示されるはず。

後、viewテンプレートの拡張子が .hamljs というものになってるけど、それを .haml にしたい場合は以下のコードを hello.js の2行目に追加すればいい。

app.register('.haml', require('hamljs'));