node.js + express
久々の更新。なるべく更新していきたいと思う。
サーバサイドJavascriptのnode.jsが流行なので試してみた。それと、node.jsだけでもWebアプリは作れるがSinatra風のexpressというWAFが話題らしいのでそれも合わせてインストール。
パッケージマネージャ周りがnave,npmと2つあってややこしくて、
- naveは、node.jsの複数のバージョンを切り替えて使うためのもの(Perlでいうところのperlbrewみたいなもの)
- npmは、node.js上のアドオンパッケージのためのパッケージマネージャ。
- まずnaveをインストールし、そのnaveでnode.js本体とnpmをインストールする
- npmでexpressなどの個別のパッケージをインストールする
というものらしい。
以下、ubuntu10.04にて。
(注)以下、筆者がミスってnode.jsの開発最新版(v0.7.5)でやってしまったため、安定版(v0.6.12)のインストールの場合と内容が少し異なります。それでもよければお読みください。
node.jsのインストールと起動
# cd nave # ./nave.sh install latest (ダウンロード&ビルドされるので、しばし待つ)
g++が必要で、関係ないエラーが出てもまずはg++をチェック。ビルド終わったら以下で起動。
# ./nave.sh use latest
インストールされているバージョンを確認するにはnave.shのlsコマンド。
バージョンを指定して起動した場合は、useの後にバージョン番号。
# ./nave.sh ls src: 0.7.5 installed: 0.7.5 (以下略) # ./nave.sh use 0.7.5
デーモンプロセスではないので.bashrcなどにnave.sh useを書いておくと便利。
expressのインストール
node.jsはアプリケーションごとのローカルフォルダ配下にモジュールを置いて使うポータルブルな感じ(?)を志向しているようで、npm install コマンドもデフォルトだとカレントディレクトリ下にパッケージをインストールしてくれる。
# npm install express
ただexpressは共通のところにインストールしておきたいので-g オプションをつけてグローバルインストールして、linkコマンドでsymlinkを張る、というのが便利。
# npm install -g express # npm link express
ここで、(本当は良くないのだが)rootで作業してるとグローバルインストールはパーミッションエラーが出るので、それを無視するコマンドが以下。
# npm config set unsafe-perm true
ちなみにこの辺りをググるとNODE_PATHを通せとか言われるが、グローバルインストールしている限りNODE_PATHは意識しなくても大丈夫。念のため。
いくつか修正
現バージョンのexpress1.0.7をnpm1.1.4でインストールするとそのままでは動かないので、2点修正が必要だったので書いておきます。
- expressが依存するconnectというパッケージを(npmが最新版を入れてくれてしまうのが動かないので)古いバージョン0.5.10に差し替え
# npm install connect@0.5.10 # rm -rf node_modules/express/node_modeles/connect # mv node_modules/connect node_modules/express/node_modules
- expressのソース中のrequire('sys')をrequire('util')に書き換え(node.jsの最新版の仕様変更)
# sed -i "s/require('sys')/require('util')/g" `grep -rl "require('sys')" express`
これで私の環境では動作確認できた。
動作確認
サンプルプログラム
// "server.js" var app = require("express").createServer(); app.get("/",function(req,res){ res.send("hello, world"); console.log([req,res]); }); app.listen(8080);
起動コマンドは以下。
# node server.js
expressはデフォルトで"0.0.0.0"でlistenするようなのでリモートからブラウザで8080にアクセスして確認できる。
あとは、expressの使い方だが、あまりマニュアルなどは整備されて無いようなのでSinatra風の試行錯誤で頑張るという感じだろうか。
(追記)node.js 0.7.5は開発版 → 0.6.12をインストールすべき。
node.jsの安定版は現在0.6.12で、開発版の0.7.5だとexpressも古いバージョンしか対応してなくて、それでnpmが古いexpressを入れてしまうので、nave install latestはあまり通常使用には向かないようだ。(それ早く行ってよーw)。なので本エントリは参考程度ということですみません。
安定版を使ってのアプリ作成などは、後日記載予定です。